我试图做的是用一些数据更新一个或多个用户。我接收一个数组中的用户电话号码,exp:["+1234555", "+1222222"]
。我遍历它们,检查它们是否存在。如果存在,我更新用户模型中的数据。问题是,假设我有两个用户要更新。当我执行函数时,只有第二个用户被更新,第一个用户没有。
exports.createNotifications= asyncHandler(async (req, res, next) => {
const { userPhone, someData } = req.body;
let createUserData;
let updateUserData;
let findUser;
const createData = async () => {
userPhone.map(async (phone) => {
findUser = await Users.findOne({ phone: phone}).then(
async (user) => {
if (user) {
updateUserData= await Users.findOneAndUpdate(
{ phone: phone},
{ $push: { someData : someData } },
{ new: true }
);
}
}
);
});
};
await createNotifications();
await new Promise((resolve) => setTimeout(resolve, 1000));
console.log(updateUserData)
res.status(200).json({
success: true,
});
});
如何同时更新这两个用户?
2条答案
按热度按时间toiithl61#
它失败了,因为你没有等待你的“Map”中内置的异步函数(实际上你用异步、等待和承诺搞砸了很多)。
考虑到您共享的代码是无效的,我假设createData和createNotifications是相同的。
你可以把这个创造 Package 成承诺,然后等待它完成
注:未测试代码
ttvkxqim2#