簡體   English   中英

如何從graphql突變而不是null返回新記錄

[英]how to return new record from graphql mutation instead of null

我通讀了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

我必須讓貓鼬返回該突變的承諾。 所以我的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 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)
   }
 }

我的突變根本不需要改變,但是我的裝置生成器也必須更新以使用Promise.then()鏈。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM