在嵌套函数中使用变量



我在嵌套函数中使用变量,并在将值传递给父函数后,但在调用它时没有显示任何内容。

function userexists(key) {
let user = false;
UsersModel.findOne({ email: key }, function (error, foundUser) {
if (!error && foundUser) user = foundUser;
else {
console.log("error or not found: " + error);
}
});
return user;
}

这样做的原因是findOne似乎是一个异步函数。因此user总是false。确保async await或在函数本身中添加回调函数。

示例async await,如果可能:

async function abc(key) {
const response = await UsersModel.findOne({ email: key });
if (response.error)
return false;
}
return response.foundUser;
}

回调函数示例:

function async abc(key, f) {
UsersModel.findOne({ email: key }, (error, foundUser) => {
if (!error) f();
});
}

感谢FloWy和VLAZ

,

function userexists(key) {
let user = false;
UsersModel.findOne({ email: key }, function (error, foundUser) {
if (!error && foundUser) user = foundUser;
else {
console.log("error or not found: " + error);
}
});
return user;
}

在函数内部使用回调,

function userexists(key, callback) {
UsersModel.findOne({ email: key }, function (error, foundUser) {
if (!error && foundUser) return callback(foundUser);
else return callback(false);
});
}

,

userexists(username, function (user) {
// you can use user here
});

最新更新