首页 文章

如何从graphql变异而不是null返回新记录

提问于
浏览
1

我通读了apollo-server-tutorial,我试图用mongodb复制它 - 没有sqllite . 我来自流星,所以我正在学习异步和猫鼬 .

我对addAuthor()的变异正常工作(我在数据库中看到一条新记录),但graphiql返回null . 如何让它返回预期的字段?

mutation {
  addAuthor(firstName: "falieson", lastName:"p") {
    _id
    firstName
    lastName
  }
}

{
  "data": {
    "addAuthor": null
  }
}

架构:https://github.com/Falieson/apollo-server-tutorial-only-mongodb/blob/master/data/schema.js#L39

解析器:https://github.com/Falieson/apollo-server-tutorial-only-mongodb/blob/master/data/resolvers.js#L38

猫鼬:https://github.com/Falieson/apollo-server-tutorial-only-mongodb/blob/master/data/models/mongoose.js#L51

型号:https://github.com/Falieson/apollo-server-tutorial-only-mongodb/blob/master/data/models/index.js#L7

1 回答

  • 3

    我需要让猫鼬回归突变的承诺 . 所以我的MongooseModel.create()改变了

    const record = new this.collection(args)
    return record.save(cb)
    

    使用Promise

    const record = new this.collection(args)
    return new Promise((resolve, reject) => {
       record.save((err, res) => {
          err ? reject(err): resolve(res)
       });
    });
    

    使用Async / Await

    async create(obj = {}) {
       const args = {
         ...this.defaultRecord(),
         ...obj
       }
       const record = new this.Collection(args)
    
       try {
         const savedRecord = await record.save()
         return savedRecord
       } catch (err) {
         handleError(err)
       }
     }
    

    我的变异根本不需要改变,但我的fixtures生成器也必须更新才能使用Promise.then()链 .

相关问题