添加上下文到一个Mongoosecallback

将上下文添加到模型查询中使用的callback的正确方法是什么? 例如…

function doSomething(param) { var magic = function(context, err, results) { if(err) { console.log('fail'); } else { // do the magic with context and results } } for( var i=0; i < 5; i++ ) { var myObject = {'secret' : i}; MyModel.find({number:param[i]}, magic(myObject, err, results)); } } 

我想遍历每个查询的结果,并有myObject的上下文。 上述解决scheme不起作用。 'err'和'results'没有被定义。

我通常做一个匿名函数,但我不能依赖for循环内的上下文。

errresults是不确定的,因为你将一个叫做err的variables和results传递给你从未定义的magic

MyModel.find不能用magic的结果做任何事情,因为你不返回任何东西,你应该返回一个带errresult的函数。

 function doSomething(param) { var magic = function(context) { // return a function here return function(err, results) { if(err) { console.log('fail'); } else { // do the magic with context and results } }; } for( var i=0; i < 5; i++ ) { var myObject = {'secret' : i}; // do not pass err or results to magic // they are not defined anywhere in this scope MyModel.find({number:param[i]}, magic(myObject)); } }