GraphQL在猫鼬回调中返回Null

时间:2019-10-03 17:36:09

标签: mongoose graphql

我有这个突变,它会按预期返回:id,url和description。

  post(parent, args, context, info) {

   const userId = getUserId(context);
   const user = await context.User.findOne({ _id: userId });

   return context.Link.create(
      {
        url: args.url,
        description: args.description,
        postedBy: userId
      },
 }

问题是,当我添加成功更新Refs to children

的功能时
async post(parent,args,context,info){

  const userId = getUserId(context);
  const user = await context.User.findOne({ _id: userId });

  return context.Link.create(
      {
        url: args.url,
        description: args.description,
        postedBy: userId
      },
      **function(error, createdLink) {
        user.links.push(createdLink._id);
        user.save(createdLink);
      }**
    );
}

在mongoose和mongo中,一切工作都很完美,但是graphQL返回null:

{
  "data": {
    "post": null
  }
}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

请勿混用回调和承诺-请参见常见方案#6 here

here in the docs所述,将回调传递给方法意味着将结果传递给回调,而不是在结果Query对象的then函数内部将其提供。只是恪守承诺。

const link = await context.Link.create({
  url: args.url,
  description: args.description,
  postedBy: userId
});

user.links.push(link._id);
await user.save();

return link;