mongoose 中的 _doc 是啥(console.log 显示有和没有相同的结果)
Posted
技术标签:
【中文标题】mongoose 中的 _doc 是啥(console.log 显示有和没有相同的结果)【英文标题】:What is `_doc` inside mongoose (console.log show the same results with it and without)mongoose 中的 _doc 是什么(console.log 显示有和没有相同的结果) 【发布时间】:2019-05-22 09:20:06 【问题描述】:我想知道 ._doc
在 mongoose 或 mongodb 中的确切含义。以及为什么 destructuring/...
在console.log
中显示错误但在 return 语句中工作正常。
接下来的 2 行返回相同的对象,所以为什么它在那里以及 ._doc
正在做什么
控制台日志(事件); // 返回相同的对象
console.log(event._doc); // 返回相同的对象
`events: () =>
return Event.find()
.then(events =>
return events.map(event =>
console.log(event); // return the same objects
console.log(event._doc); // return the same objects
console.log(...event); /* Graphql say "Found non-callable @@iterator" but later, on return I'm using destructuring without any errors why ? */
return
...event._doc,
_id: event._doc._id.toString(),
date: new Date(event._doc.date).toISOString(),
creator: user.bind(this, event._doc.creator)
;
)
)`
console.log(event); or console.log(event._doc);
的样子
` _id: 5c1c6d928debd345a54de4ce,
title: ' Test',
description: 'Test',
price: 26.99,
date: 2018-12-21T04:35:30.672Z,
creator: 5c1c699bc1f1423c0047d2f1,
__v: 0
_id: 5c1d8cde6efd7f02832aa2fa,
title: 'Test 2',
description: 'another description',
price: 23.22,
date: 2018-12-22T01:01:18.735Z,
creator: 5c1c699bc1f1423c0047d2f1,
__v: 0
_id: 5c1d8d6f6f51b802fc32ab22,
title: 'Test 3',
description: 'another description 3',
price: 123.22,
date: 2018-12-22T01:03:43.543Z,
creator: 5c1c699bc1f1423c0047d2f1,
__v: 0 `
所以它甚至不是一个数组,为什么我需要一个 ...
作为回报?
我在教程中遵循此代码,但不理解这两件事,因此我将非常感谢任何有用的答案。
我正在使用:Mongo, MongoDb and GraphQl
谢谢。
【问题讨论】:
毕竟,它是一个内部属性(这就是下划线的意思),你的代码不应该与它交互。 【参考方案1】:_doc
字段可让您直接访问“原始”文档,该文档通过 mongodb 驱动程序传递,绕过 mongoose。这也是使用console.log
可能会得到令人困惑的结果的原因。
如果你只记录一个 mongoose 元素,输出看起来可能与 _doc 的输出非常相似,因为 mongoose 有一个 toString() 方法,它只会输出实际的数据点,而不是所有的辅助函数,如 (.save(), .update()...)。
查看https://github.com/Automattic/mongoose#driver-access了解更多信息
【讨论】:
以上是关于mongoose 中的 _doc 是啥(console.log 显示有和没有相同的结果)的主要内容,如果未能解决你的问题,请参考以下文章
Mongoose 和 TypeScript - 类型“事件模型”上不存在属性“_doc”