添加上下文到一个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循环内的上下文。
err
和results
是不确定的,因为你将一个叫做err
的variables和results
传递给你从未定义的magic
。
MyModel.find
不能用magic
的结果做任何事情,因为你不返回任何东西,你应该返回一个带err
和result
的函数。
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)); } }