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

时间:2018-01-09 19:31:30

标签: javascript mongodb mongoose graphql apollo-server

我通读了apollo-server-tutorial,我试图用mongodb复制它 - 没有sqllite。我是从流星那里来的,所以我学习了async& amp;我正在做它的猫鼬。

我对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 个答案:

答案 0 :(得分:4)

我需要让猫鼬回归突变的承诺。所以我的MongooseModel.create()改变了 const record = new this.collection(args) return record.save(cb) 使用Promise const record = new this.collection(args) 返回新的承诺((resolve,reject)=> {    record.save((err,res)=> {       呃 ?拒绝(错误):解决(res)    }); }); 使用Async / Await  async create(obj = {}){    const args = {      ... this.defaultRecord()      ... OBJ    }    const record = new this.Collection(args)    尝试{      const savedRecord = await record.save()      return savedRecord    } catch(err){      的HandleError(ERR)    }  } 我的变异根本不需要改变,但我的fixtures生成器也必须更新才能使用Promise.then()链。