【问题标题】:Proper way to return a mutation result? (GraphQL with Apollo and Mongoose返回突变结果的正确方法? (GraphQL 与 Apollo 和 Mongoose
【发布时间】:2021-08-22 01:18:53
【问题描述】:

我能够使用以下代码从updateTopic 返回一些东西

    Mutation: {
        async updateTopic(parent, args, context, info) {
            const { _id, name, desc, body, subject } = args
            r = await Topic.findOneAndUpdate({_id: _id}, {$set:{ name:name, desc:desc, body:body, subject:subject}}, {new: true, useFindAndModify: false}, (err, topic) => {
                if(err) {
                    console.log(err)
                    return err
                } else {
                    console.log(topic)
                    return { ...topic._doc }
                }
            })
            return r
        },

我觉得我需要一个 async 函数和 await 才能让它工作,但我的函数 addTopic 没有这个我能够做到这一点。

我这样做是最好的方法还是使用 Apollo-Server 和 Mongoose 有更好的方法?

【问题讨论】:

    标签: mongodb mongoose graphql apollo-server


    【解决方案1】:

    您可以返回一个 Promise 并避免 async 和 await,通常所有查询和突变通常都返回 Promise。

      Mutation: {
        updateTopic(parent, args, context, info) {
            const { _id, name, desc, body, subject } = args
            return Topic.findOneAndUpdate({_id: _id}, {$set:{ name:name, desc:desc, body:body, subject:subject}}, {new: true, useFindAndModify: false}, (err, topic) => {
                if(err) {
                    console.log(err)
                    return err
                } else {
                    console.log(topic)
                    return { ...topic._doc }
                }
            })
        },
    

    将查询/突变的逻辑放在单独的文件(服务)中总是一个好主意。

    【讨论】:

      猜你喜欢
      • 2019-01-08
      • 2019-06-11
      • 2021-04-25
      • 2020-03-20
      • 2017-11-10
      • 2019-11-27
      • 2020-11-02
      • 2017-10-25
      • 2014-05-03
      相关资源
      最近更新 更多