我想知道为什么在执行突变时我的回答为何为“空”。
我的查询有效:执行请求时,数据库SQL中的is_active状态变为true或false。
创建时,我有一个正确的响应,但没有更新。
Graphql请求:
SELECT * FROM yourTable WHERE id = 1 FOR UPDATE;
SELECT * FROM yourTable WHERE id = 2 FOR UPDATE;
响应:
mutation {
updateSequence(id: 4, , input: {is_active: true}) {
is_active
}
}
resolvers.js
{
"data": {
"updateSequence": {
"is_active": null
}
}
}
schema.js
Mutation : {
createSequence(_, {input}) {
return models.Sequence.create(input);
},
updateSequence(_, {id, input}) {
return models.Sequence.update(input, {where: {id: id}});
}
}
已解决:将MySQL迁移到Postegres以使用返回选项(仅Postegres)
我迁移数据库以使用Sequelize中的返回选项。
# 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
}
答案 0 :(得分:1)
create
method返回一个Promise<Model>
,在您的情况下,它返回与type Sequence
相匹配的内容。update
method会返回Promise<Array<number, number>>
,但与type Sequence
不匹配。promise返回一个包含一个或两个元素的数组。第一个元素始终是受影响的行数,而第二个元素是实际受影响的行(仅在带有options.returning true的postgres中支持)。
因此,要么将updateSequence
的返回类型更改为与models.Sequence.update
的返回类型相匹配的内容,要么必须在{{1 }}。
希望有帮助。