簡體   English   中英

使用array.map()在MongoDB中保存數組中的每個元素

[英]Save in MongoDB for each element in array using array.map()

我試圖在我的mongodb數據庫中為數組中的每個項目創建一個文檔。

我知道可以通過使用array.forEach()並在每次迭代時將元素推入數組來完成。

但是我寧願使用array.map()實現相同的array.map()

我努力了

const a = 2;
const myArray = [3, 4, 5, 6];
const nodes = myArray.map((b) => {
  const node = new Node({
    a: a,
    b: b
  });
  node.save((err, newNode) => {
    return {
      data: {
        id: newNode.id,
        a: a,
        b: b
      }
    };
  });
});

但它返回[ undefined, undefined, undefined, undefined, undefined ]

我猜是因為它等待node.save()運行。

另外,由於我知道我將一次創建多個文檔,因此可以這樣做而不是多次調用數據庫嗎? 我仍然需要這些ID,但是我想我可以在訪問數據庫之前生成這些ID?

您可以使用{multi:true}插入多個文檔

您的代碼不會返回任何內容,但是就像您說的那樣,即使您返回node.save(),它也可能會立即返回。 您可以使用Promise.all強制執行

const a = 2;
const myArray = [3, 4, 5, 6];
const nodes = myArray.map((b) => {
  const node = new Node({
    a: a,
    b: b
  });
  return new Promise((resolve, reject) => {
    node.save((err, newNode) => {
      resolve({
        data: {
          id: newNode.id,
          a: a,
          b: b
        }
      })
    });
  })
});
Promise.all(nodes, (result__ARRAY) => {
   // do something with this array, 
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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