![](/img/trans.png)
[英]Array.map : get the index of each element to use in the return function
[英]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.