javascript - Mongoose:复制查询结果
问题描述
我有一个关于在猫鼬中复制或映射查询结果的问题。以下是我的代码。
const user = await User.find({ birthYear: 1990 }).populate("friends").exec();
console.log(user); // (1)
console.log({ ...user }); // (2)
我认为(1)的结果和(2)的结果应该相同,但结果却大不相同。(1) 打印由 过滤的文档数组birthYear
。但是,(2)打印了一个键是数字的映射,我认为它似乎是数组的索引。你能告诉我为什么会这样吗?
(1) 的结果
[
{
_id: ...,
birthYear: 1990,
lotsOfData: ...,
},
{
_id: ...,
birthYear: 1990,
lotsOfData: ...,
}
]
(2) 的结果
{
'0': {
_id: ...,
birthYear: 1990,
lotsOfData: ...,
},
'1': {
_id: ...,
birthYear: 1990,
lotsOfData: ...,
}
}
解决方案
Mongoose 的find()
方法在等待时总是返回一个数组,所以你可能应该调用你的数组users
而不是user
. 要复制您的数组,您应该使用
console.log( ...user );
在您的代码中,您正在基于提供的数组构建一个新的 JS 对象。因此扩展运算符将数组索引作为键并将数组的对象作为值放入新对象中(因为您使用了花括号)。
因此,您混合了扩展运算符的两个用例:...array
复制一个数组,同时用字段{ ...obj }
填充新对象。obj
在这种情况下,数组被 JavaScript 运行时“视为”对象,因此它的索引被评估为键。
推荐阅读
- type-conversion - 可以做哪些即兴创作来纠正错误?
- firebase - 部署 firebase 云函数时排除函数
- indexing - 我越来越接近于找出 CS50 中 Finance 的索引部分,但我的表无法正常工作
- sqlite - SQLite首先按字母顺序选择,然后是所有其他字符
- ios - UIGestureRecognizerStateEnded 在对象旋转结束时未注册
- java - 按日期排序java基本列表
- python - 如何在 Python 中编辑 CSV 中的值
- mongodb - 寻求帮助——查询 MongoDB
- html - 自动完成组件在反应应用程序中给出错误
- python - 如何在没有 dateutils 的情况下在 python 中读取非 ISO 和 ISO 格式的日期时间字符串?