pel*_*lea 4 javascript mongoose mongodb graphql graphql-js
让我们使用返回一项的基本 mongodb 查询:
const result = await db.myCollection.findById('xxxx')
return result;
Run Code Online (Sandbox Code Playgroud)
给 graphql 的这个查询结果工作正常。
但是现在,如果我返回 a result.toObject(),它将不再起作用。
我收到以下错误:
"message": "Cannot return null for non-nullable field MyCollection.id."
Run Code Online (Sandbox Code Playgroud)
为什么用toObject()之间的映射_id和id不能做?
由 MongoDB 生成的 id 将是一个_id字段——实际上是 mongoose为您映射它。
默认情况下,Mongoose 为您的每个模式分配一个 id 虚拟 getter,它将文档 _id 字段转换为字符串,或者在 ObjectIds 的情况下,返回其 hexString。如果您不希望将 id getter 添加到您的架构中,您可以在架构构建时禁用它传递此选项。
他们在这里的关键是该id领域是一个虚拟的吸气剂。为了将那些包含在生成的对象中,您必须将适当的选项传递给toObject:
result.toObject({ virtuals: true })
Run Code Online (Sandbox Code Playgroud)