我正在尝试在 const 中推送一个值,但它在 .then
中并且它不起作用你知道我该怎么做吗?
我在我的 console.log(newResult)
中的 if
中获得了一个值,但数据没有推送到我的 const newResult
中返回res.status(200).json(newResult);
.then(function (friends) {
if (friends) {
const newResult = [];
friends.forEach((r) => {
if (r.UserID == userFound.id) {
models.User.findOne({
where: {
id: r.idFriend
}
})
.then(function(userFound) {
newResult.push({
id: r.id,
user: {
id: r.User.id,
email: userFound.email,
username: userFound.username
}
});
console.log(newResult)
})
} else
newResult.push({
id: r.id,
user: {
id: r.User.id,
email: r.User.email,
username: r.User.username
}
});
console.log(newResult)
});
res.status(200).json(newResult);
}
}
当我进入 if 条件时,实现的每个测试都会返回一个空标签
最佳答案
它永远不会工作,因为你在做 async
调用
forEach 里面的 models.User.findOne
。
当异步调用数据库以获取用户时,您将在 console.log
上获得结果。
但在这一切发生之前,forEach
已完成执行并且代码命中 res.status(200).json(newResult);
行,并且您看不到 if
条件的结果。
不使用这种方法,而是使用 mongoose populate
并填充基于 userObject 的 userID
,同时以这种方式查找 friends
,您不必在 forEach
内部进行异步调用。
关于javascript - 将数组插入 .then 内的 const,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49922844/