[英]Mongoose: copying the result of query
我有一个关于在 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 运行时“视为”对象,因此它的索引被评估为键。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.