gpt4 book ai didi

javascript - 为什么即使我将值插入其中,空数组仍然为空?

转载 作者:行者123 更新时间:2023-12-02 23:09:38 26 4
gpt4 key购买 nike

usersList 是一个包含字符串值的有效数组,User.findById(userId) 按预期返回用户。我认为问题在于范围 block ,因为 forEach 方法和 FindById 方法工作完美。

我尝试了许多返回每个值的数组方法。 (例如 map 和过滤器)我读过很多关于高级 MongoDB 技术、作用域 block 和数组方法的文档。

const usersList = camp.usersList;
let users = [];
usersList.forEach((userId) => {
User.findById(userId, (err, user) => {
if(err) return res.redirect('/admin/db');
users.push(user);
})
})
console.log(users);

输出应该是 [user1, user2, ...],而不是 []。

最佳答案

async () => {
const usersList = camp.usersList;
const users = [];
for (var userId of usersList) {
const user = await User.findById(userId).exec();
if (!user) return res.redirect('/admin/db');
users.push(user);
}
console.log(users);
}

为了获得更好的性能,您可以使用下面的代码,它不会等待单个请求完成,它会进行并行调用,从而提高性能

async ()=> {
try {
const users_promise = usersList.map(userid => User.findById(userid).exec())
const users = await Promise.all(users_promise);
} catch(error) {
res.redirect('/admin/db');
}
}

关于javascript - 为什么即使我将值插入其中,空数组仍然为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57433629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com