簡體   English   中英

Mongoose:復制查詢結果

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM