![](/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.