繁体   English   中英

在更新突变 GraphQL 和 Sequelize 时返回 null

[英]Return null on update mutation GraphQL and Sequelize

我想知道为什么当我执行我的突变时我的响应是“null”。

我的查询有效:当我执行请求时,数据库 SQL 中的状态 is_active 变为 true 或 false。

创建时,我有正确的响应,但没有更新。

Graphql 请求:

mutation {
  updateSequence(id: 4, , input: {is_active: true}) {
  is_active
  }
}

响应 :

{
  "data": {
    "updateSequence": {
      "is_active": null
    }
  }
}

解析器.js

Mutation    : {
    createSequence(_, {input}) {
        return models.Sequence.create(input);
    },
    updateSequence(_, {id, input}) {
        return models.Sequence.update(input, {where: {id: id}});
    }
}

schema.js

  # Sequence
  type Sequence {
    id: Int!,
    code: String,
    buckets: [Bucket],
    sequence_types : [SequenceType]
    is_active: Boolean,
  }

  # SequenceInput
  input SequenceInput {
    is_active: Boolean
  }

  ...

  type Query {
    sequences: [Sequence]
    sequence(id: Int): Sequence
  }

  type Mutation {
    createSequence(input: SequenceInput): Sequence,
    updateSequence(id: ID!, input: SequenceInput): Sequence
  } 

  schema {
    query: Query,
    mutation: Mutation
  }

已解决:将 MySQL 迁移到 Postegres 以使用返回选项(仅限 Postegres)

我迁移我的数据库以使用 Sequelize 的返回选项。

createSequence(_, {input}) {
     return models.Sequence.create(input);
},
updateSequence(_, {id, input}) {
    return models.Sequence.update(input, {where: {id: id}, returning: true}).then((sequence) => {
        return sequence[1][0].dataValues;
    });
},

根据续集文档

  • create方法返回一个Promise<Model> ,在您的情况下,它返回与type Sequence匹配的内容。
  • 相反, update方法返回一个Promise<Array<number, number>>并且不匹配type Sequence

承诺返回一个包含一个或两个元素的数组。 第一个元素始终是受影响的行数,而第二个元素是实际受影响的行(仅在带有 options.returning true 的 postgres 中支持。)

因此,要么将updateSequence的返回类型更改为与models.Sequence.update的返回类型匹配的东西,要么在update之后构建一个与type Sequence匹配的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM