【发布时间】:2021-03-02 21:14:31
【问题描述】:
我有两个案例,我试图了解发生了什么,但对我来说仍然不够清楚,所以我读到如果我想在 for 循环或 map 中运行异步调用,我需要使用 Promise.all 但是让我分享一下发生在我身上的事情
首先我使用地图更新了我数据库中的许多记录,它更新了一些而不是全部数据
AllAuthToken.map(async singleToken =>{
let deviceIds = uuidv4();
let newDeviceArray = {
[deviceIds]: singleToken.deviceToken,
};
await AuthToken.updateOne(
{ _id: singleToken._id },
{
$set: {
tokensDeviceArray: [newDeviceArray],
deviceId: [deviceIds],
},
},
{ $new: true }
);
}
然后发生这种情况后,我使用了 for 循环并更新了所有数据
for (let i = 0; i < AllAuthToken.length; i++) {
let deviceIds = uuidv4();
let newDeviceArray = {
[deviceIds]: AllAuthToken[i].deviceToken,
};
await AuthToken.updateOne(
{ _id: AllAuthToken[i]._id },
{
$set: {
tokensDeviceArray: [newDeviceArray],
deviceId: [deviceIds],
},
},
{ $new: true }
);
}
那么发生了什么导致第一个案例失败而第二个案例通过
【问题讨论】:
标签: javascript arrays mongodb es6-promise