Node.js GraphiQL返回零突变
我将GraphQL与Sequelize一起使用,我有一个返回null的突变 我已经尝试过用几种不同的方法更改有关变异的解析器,但是当我用GraphiQL测试它时,它总是返回null 以下是以几种不同方式编写的解析器: 1-最初我的想法是在承诺中添加包装功能Node.js GraphiQL返回零突变,node.js,sequelize.js,graphql,graphql-js,Node.js,Sequelize.js,Graphql,Graphql Js,我将GraphQL与Sequelize一起使用,我有一个返回null的突变 我已经尝试过用几种不同的方法更改有关变异的解析器,但是当我用GraphiQL测试它时,它总是返回null 以下是以几种不同方式编写的解析器: 1-最初我的想法是在承诺中添加包装功能 resolve(root, args) { return new Promise((resolve, reject) => { db.record.findOne({ where: { U
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)
})
})
})
}
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 } })
})
}
2-在这里,我回报一个承诺
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)
})
})
})
}
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 } })
})
}
下面是我直接返回的记录
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
})
})
}
问题是您没有从解析器返回任何内容,并且没有正确使用承诺。尝试:
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 } });
});
}
问题是您没有从解析器返回任何内容,并且没有正确使用承诺。尝试:
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 } });
});
}
在这些情况下,数据库是否得到更新?或者,甚至这种情况也没有像预期的那样发生?数据库是否得到更新?在这些情况下,数据库是否得到更新?或者,甚至这并没有像预期的那样发生?数据库确实得到了更新,这对我来说不起作用。仍然返回null,或者是否存在其他错误?您是否尝试过在代码的各个阶段删除console.logs以查看发生了什么?它只是返回null,我认为控制台日志记录将是我的下一种方法。我仍在努力理解grapql,我的解析似乎只有在其中一行返回承诺时才起作用,而这一行返回承诺,任何更复杂的都返回null。是的,如果它们是异步的,左轮手枪总是需要返回承诺。这对我不起作用。仍然返回null还是存在其他错误?您是否尝试过在代码的各个阶段删除console.logs以查看发生了什么?它只是返回null,我认为控制台日志记录将是我的下一种方法。我仍然在试图用grapql来概括我的想法,我的解析似乎只有在我有一行的时候才有效,并且这一行返回一个承诺,任何更复杂的东西都返回null。是的,如果旋转器是异步的,它总是需要返回一个承诺。