Javascript 带有graphql和document.toObject()的mongodb_id

Javascript 带有graphql和document.toObject()的mongodb_id,javascript,mongodb,mongoose,graphql,graphql-js,Javascript,Mongodb,Mongoose,Graphql,Graphql Js,让我们使用一个基本的mongodb查询,返回一项: const result = await db.myCollection.findById('xxxx') return result; 这个提供给graphql的查询结果运行良好 但是现在,如果我返回一个result.toObject(),它就不再工作了 我得到了以下错误: "message": "Cannot return null for non-nullable field MyCollection.id." 为什么使用toObje

让我们使用一个基本的mongodb查询,返回一项:

const result = await db.myCollection.findById('xxxx')
return result;
这个提供给graphql的查询结果运行良好

但是现在,如果我返回一个
result.toObject()
,它就不再工作了

我得到了以下错误:

"message": "Cannot return null for non-nullable field MyCollection.id."

为什么使用
toObject()
\u id
id
之间的映射无法完成?

MongoDB生成的id将是一个
\u id
字段——这就是mongoose

默认情况下,Mongoose为每个模式分配一个id虚拟getter 它将documents _id字段转换为字符串,或者 对于objectid,它的十六进制字符串。如果您不想将id获取程序添加到 您的模式,您可以通过在模式中传递此选项来禁用它 施工时间

这里的关键是
id
字段是一个虚拟getter。为了在生成的对象中包含这些对象,您必须将适当的选项传递给
toObject

result.toObject({ virtuals: true })
有关更多详细信息,请参阅或