[英]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.