1

我很困惑。我很想学习如何传递我在异步函数中获得的值。

我有一个具有基本身份验证功能的模块。在登录中,我要求用户模型搜索具有给定用户名的用户。

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.
}));
}

但是我怎样才能将该用户对象传递回登录函数呢?

4

2 回答 2

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
    };
}
于 2013-02-18T18:11:29.970 回答
0

您不能将其传(因为函数 os 是异步login的,并且在完成时已经返回)。但是您可以将其传递另一个函数。

于 2013-02-18T18:07:59.450 回答