我在项目中一起使用mongoose
和express-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>}
我尝试使用_id
将console.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()
字段作为非字符串值。谢谢您的帮助!
答案 0 :(得分:0)
当您使用14.0.2
时,它对最新发行版中引入的graphql软件包有a change的问题,并且有already a PR解决了此问题。如果切换到0.13.2
效果更好,那就更好了。