【问题标题】:mongodb _id with graphql and document.toObject()mongodb _id 与 graphql 和 document.toObject()
【发布时间】:2018-08-25 12:39:44
【问题描述】:

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

const result = await db.myCollection.findById('xxxx')
return result;

此查询结果提供给 graphql 工作正常。

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

我收到以下错误:

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

为什么用toObject()_idid之间的映射不能做?

【问题讨论】:

    标签: javascript mongodb mongoose graphql graphql-js


    【解决方案1】:

    MongoDB 生成的 id 将是一个 _id 字段——它是 mongoose,即 actually mapping it for you

    默认情况下,Mongoose 会为您的每个模式分配一个 id virtual getter 它将文档 _id 字段转换为字符串,或者在这种情况下 ObjectIds,它的 hexString。如果您不想将 id getter 添加到 您的架构,您可以在架构处通过此选项禁用它 施工时间。

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

    result.toObject({ virtuals: true })
    

    请参阅docsthis answer 了解更多详情。

    【讨论】:

      猜你喜欢
      • 2019-05-11
      • 2015-01-02
      • 2021-02-25
      • 2019-07-31
      • 2016-07-12
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      相关资源
      最近更新 更多