2016-09-03 32 views
0

我想在我的數組中的每個項目的MongoDB數據庫中創建一個文檔。保存在MongoDB陣列中的每個元素array.map()

我知道這可以通過使用array.forEach()併爲每次迭代將一個元素推送到數組來完成。

但我寧可想要達到與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?

回答

0

你可以插入{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, 
}) 
相關問題