我正在使用带有Sequelize的GraphQL,并且我有一个返回null的突变。
我尝试过用几种不同的方法来改变变异的解析器,但当我用GraphiQL测试它时,它总是返回null。
下面是用几种不同的方式编写的解析器:
1-最初我的想法是在promise中添加包装功能。
resolve(root, args) {
return new Promise((resolve, reject) => {
db.record.findOne({ where: { UID: args.UID } })
.then(record => {
let newArr = undefined
if (record.watched == null) {
newArr = [args.value]
} else {
let old = record.watched
newArr = old.concat([args.value])
}
db.record.update({ watched: newArr }, { where: { UID: args.UID } })
.then(record => {
resolve(record)
})
})
})
}2-在这里,我返回一个承诺。
resolve(root, args) {
db.record.findOne({ where: { UID: args.UID } })
.then(record => {
let newArr = undefined
if (record.watched == null) {
newArr = [args.value]
} else {
let old = record.watched
newArr = old.concat([args.value])
}
return db.record.update({ watched: newArr }, { where: { UID: args.UID } })
})
}3-下面我直接返回了记录。
resolve(root, args) {
db.record.findOne({ where: { UID: args.UID } })
.then(record => {
let newArr = undefined
if (record.watched == null) {
newArr = [args.value]
} else {
let old = record.watched
newArr = old.concat([args.value])
}
db.record.update({ watched: newArr }, { where: { UID: args.UID } })
.then(record => {
return record
})
})
}发布于 2017-08-13 11:58:31
问题是您没有从您的解析器返回任何内容,并且您没有正确使用promises。尝试:
resolve(root, args) {
return db.record.findOne({ where: { UID: args.UID } })
.then(record => {
let newArr = undefined
if (record.watched == null) {
newArr = [args.value]
} else {
let old = record.watched
newArr = old.concat([args.value])
}
return db.record.update({ watched: newArr }, { where: { UID: args.UID } });
});
}https://stackoverflow.com/questions/45640605
复制相似问题