首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GraphiQL返回零变异

GraphiQL返回零变异
EN

Stack Overflow用户
提问于 2017-08-12 01:18:44
回答 1查看 255关注 0票数 1

我正在使用带有Sequelize的GraphQL,并且我有一个返回null的突变。

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

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

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

代码语言:javascript
复制
    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-在这里,我返回一个承诺。

代码语言:javascript
复制
    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-下面我直接返回了记录。

代码语言:javascript
复制
    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
                    })
            })
    }
EN

回答 1

Stack Overflow用户

发布于 2017-08-13 11:58:31

问题是您没有从您的解析器返回任何内容,并且您没有正确使用promises。尝试:

代码语言:javascript
复制
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 } });
        });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45640605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档