【问题标题】:Return null on update mutation GraphQL and Sequelize在更新突变 GraphQL 和 Sequelize 时返回 null
【发布时间】:2019-08-20 06:40:49
【问题描述】:

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

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

当我创建时,我有一个正确的响应,但不是在更新。

Graphql 请求:

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

回应:

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

resolvers.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;
    });
},

【问题讨论】:

  • 您能否提供您的架构,以了解它应该返回什么?
  • 当然@MarcoDaniels !我更新了我的帖子

标签: mysql node.js graphql sequelize.js apollo-server


【解决方案1】:

根据Sequelize Documentation

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

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

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

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2020-12-22
    • 2023-01-09
    • 2019-06-28
    • 1970-01-01
    • 2021-06-25
    • 2021-04-01
    • 2019-11-25
    • 2018-06-18
    • 2018-01-08
    相关资源
    最近更新 更多