猫鼬Document.toObject产生GraphQL错误

时间:2018-12-10 22:45:36

标签: mongoose graphql

我在项目中一起使用mongooseexpress-graphql。我想使用here中所述的.toObject()方法将文档转换为对象,然后将值返回给GraphQL。

GraphQL模式:

type User {
    _id: ID,
    // ...
}

代码:

const Me = function (params, req) {
    if (!req.user) throw Error('Not logged in');
    return req.user.toObject();
};

module.exports = Me;

但是,出现以下错误:

  

ID不能代表值:{_bsontype:“ ObjectID”,id:<缓冲区5b 9b cb 54 df d9 c5 1e 04 e4 eb 54>}

我尝试使用_idconsole.log(req.user.toObject()._id)打印到屏幕上,但是它只显示id字符串。由于某些原因,以下代码可以正常工作:

const Me = function (params, req) {
    if (!req.user) throw Error('Not logged in');
    return JSON.parse(JSON.stringify(req.user.toObject()));
};

module.exports = Me;

我不确定是什么原因导致GraphQL直接从_id方法读取.toObject()字段作为非字符串值。谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

当您使用14.0.2时,它对最新发行版中引入的graphql软件包有a change的问题,并且有already a PR解决了此问题。如果切换到0.13.2效果更好,那就更好了。