Node.js GraphiQL返回零突变

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

我将GraphQL与Sequelize一起使用,我有一个返回null的突变

我已经尝试过用几种不同的方法更改有关变异的解析器,但是当我用GraphiQL测试它时,它总是返回null

以下是以几种不同方式编写的解析器:

1-最初我的想法是在承诺中添加包装功能

    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。是的,如果旋转器是异步的,它总是需要返回一个承诺。