我很困惑。我很想学习如何传递我在async函数中获得的值。
我有一个带有基本身份验证功能的模块。在登录中,我要求用户模型搜索具有给定用户名的用户。
login: function(req){
var username = req.body.username,
password = req.body.password;
user.find(username);
}
然后用户模型继续并执行此操作。
exports.find = function(username){
console.log(User.find({username: username}, function(error, users){
// I get nice results here. But how can I pass them back.
}));
}
但是如何将该用户对象传递回登录功能?
答案 0 :(得分:2)
您需要将回调函数传递给该方法。 Node.js需要一种非常回调驱动的编程风格。
例如:
// in your module
exports.find = function(username, callback){
User.find({username: username}, function(error, users){
callback(error, users);
});
}
// elsewhere... assume you've required the module above as module
module.find(req.params.username, function(err, username) {
console.log(username);
});
所以你不返回值;你传入函数然后接收值(冲洗,重复)
您在User类上的登录方法将如下所示:
login: function(req, callback){
var username = req.body.username,
password = req.body.password;
user.find(username, function(err, user) {
// do something to check the password and log the user in
var success = true; // just as an example to demonstrate the next line
callback(success); // the request continues
};
}
答案 1 :(得分:0)
你无法传递返回(因为该函数是异步的,login
在完成时已经返回了)。但是你可以将提前传递给另一个函数。