Apollo GraphQL调用createPost Mutation返回null问题求助
GraphQL Mutation返回null问题修复
问题原因
两个Mutation的解析函数(resolver)没有返回数据库操作的结果,GraphQL接收不到返回值时就会默认返回null。
你当前的resolver中Mutation部分代码存在遗漏:
Mutation: { createPost: async (parent, args, {mongoDataMethods}) =>{ await mongoDataMethods.createPost(args) // 缺少return语句,执行结果没有返回给GraphQL }, createAuthor : async (parent, args, {mongoDataMethods}) =>{ await mongoDataMethods.createAuthor(args) // 同样缺少return语句 } }
虽然你在data层封装的createPost、createAuthor方法已经正确返回了MongoDB存储后的文档对象,但是resolver调用这两个方法时只等待了异步执行完成,没有把结果透传给GraphQL的执行引擎,最终接口返回的createPost字段就会是null。
修复方法
给两个Mutation resolver加上return语句,把数据库返回的创建结果透传出去即可,修改后的Mutation部分代码如下:
// Mutations Mutation: { createPost: async (parent, args, {mongoDataMethods}) =>{ return await mongoDataMethods.createPost(args) }, createAuthor : async (parent, args, {mongoDataMethods}) =>{ return await mongoDataMethods.createAuthor(args) } }
修改完成后重启服务,再执行之前的Mutation测试语句,就能正常获取到id、name、content等预期字段值了。
如果修改后仍有异常,可以先校验传入的authorId是否在Authors集合中真实存在,但从你当前返回全null的表现来看,核心问题就是resolver漏写return。
内容的提问来源于stack exchange,提问作者Nguyễn Điệp
相关产品推荐
相关产品推荐

