【发布时间】:2020-06-24 00:52:11
【问题描述】:
大家好,我是 nodeJS 和 mongoDb 的新手。所以我对这段代码有一些问题,这似乎对其他人有用,因为它是教程的一部分,但不适合我。问题出在函数“followThisUser”中,我已经验证了返回,不会等到“following”和“followed”变量被赋值。它只是将它们返回为未定义。如果有人可以帮助我理解为什么会发生这种情况,并给我一个解决方案,我会非常满意。
async function followThisUser(indentity_user_id, user_id) {
var following = await Follow.findOne({
user: indentity_user_id,
followed: user_id
}).exec((err, follow) => {
if (err) return handleError(err);
return follow;
});
var followed = await Follow.findOne({
user: user_id,
followed: indentity_user_id
}).exec((err, follow) => {
if (err) return handleError(err);
return follow;
})
return {
following,
followed
}
}
function getUser(req, res) {
var userId = req.params.id
User.findById(userId, (err, user) => {
if (err) return res.status(500).send({
message: 'Error en la petición'
})
if (!user) return res.status(404).send({
message: 'Error el usuario no existe'
})
followThisUser(req.user.sub, userId).then((value) => {
user.password = undefined;
return res.status(200).send({
user,
value
})
})
})
}
【问题讨论】:
-
这里没有人知道
Follow或User是什么,或者它们的实现对于您所询问的内容可能是必不可少的,因此您不太可能得到原样的答复. -
@SeanKinsey
Follow和User在我看来像是收藏 -
他们当然可以,但是我们知道的收藏有效吗?具有符合 OP 期望的内容的集合?现在,如果这些集合是空的,
undefined/undefined似乎是正确的结果? -
将
console.log(follow)添加到.exec()回调函数中,以确保它们返回一些内容。 -
呼叫
.exec()不带参数。将错误处理为来自.exec()返回的Promise对象的拒绝
标签: javascript node.js mongoose