在路径外调用函数

时间:2012-11-01 16:17:13

标签: node.js mongodb express

在mongojs,当你这样做时:

var birds = db.birds.find(searchTerm, callback);

...如何将参数传递给回调?我试过绑定,如:

birds = db.birds.find(searchTerm, app.get('getBirds').bind(res));

......但无济于事。只是我想尝试传递GET路由的响应对象,以便回调可以使用res.send(结果)进行渲染。

另一个选项是设置app.set('res':res);并从回调中调用app.get('res') - 我不确定这是个好主意。它有效,但它不能很好地服从事件循环模型 - 我认为返回应用程序的请求可能代价高昂?任何帮助都将被感激地接受。 :)

2 个答案:

答案 0 :(得分:1)

确定您要完成的任务:

您打算在服务器的响应中使用find调用的结果吗?您可以将find包装在一个函数中,该函数将响应作为参数,然后定义回调到find并在其中访问响应。

例如(未经测试的代码,但这是主意):

// function called when a request is received
function getBirds(searchTerm, res) {
    birds = db.birds.find(searchTerm, function(err, docs) {
        // code in here will have access to res because it is in a closure
    });
}

答案 1 :(得分:0)

通常通过将callback函数调用包装在匿名函数中来执行此操作:

db.birds.find(searchTerm, function (err, birds) {
    callback (err, birds, res);
});