内部回调的可见性

时间:2012-08-25 20:09:56

标签: javascript node.js mongoose

我在下面编写的代码是控制器user.js

的一部分
exports.login = function(req, res) {
var db = require('../db').tables;

//db.user.find(function(err, user) { console.log(user) });

switch (req.method) {
    default:
    case 'GET':
    break;
    case 'POST':
        db.user.find({username: req.body.username}, function(err, user) {

        });

        console.log(user);
    break;
}

res.render('user/login', {title: 'Login'});
};

问题是函数 db.user.find ,我在回调中没有变量 res

我已经多次尝试重新阅读mongoose文档,使用的语法更舒适,但没有。

您如何建议我更改代码?

对不起英语不好但我用谷歌。 :(

1 个答案:

答案 0 :(得分:5)

由于find的匿名回调函数是在login函数的上下文中定义的,因此您的回调已经可以通过闭包访问res

...
db.user.find({username: req.body.username}, function(err, user) {
    // code here can reference res from the enclosing scope
    res.json(user);
});
...