Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向Mongoose回调添加上下文_Javascript_Node.js_Mongoose - Fatal编程技术网

Javascript 向Mongoose回调添加上下文

Javascript 向Mongoose回调添加上下文,javascript,node.js,mongoose,Javascript,Node.js,Mongoose,向模型查询中使用的回调添加上下文的正确方法是什么?例如 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

向模型查询中使用的回调添加上下文的正确方法是什么?例如

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));
    }
}
功能剂量测量(参数){
var magic=函数(上下文、错误、结果){
if(err){console.log('fail');}
否则{
//利用上下文和结果来施展魔法
}
}
对于(变量i=0;i<5;i++){
var myObject={'secret':i};
find({number:param[i]},magic(myObject,err,results));
}
}
我希望遍历每个查询的结果,并具有myObject的上下文。上述解决方案不起作用。”未定义“错误”和“结果”


我通常使用匿名函数来实现这一点,但我不能依赖for循环中的上下文。

err
results
是未定义的,因为您正在将名为
err
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));
    }
}
功能剂量测量(参数){
var magic=函数(上下文){
//在这里返回一个函数
返回函数(错误、结果){
if(err){console.log('fail');}
否则{
//利用上下文和结果来施展魔法
}
};
}
对于(变量i=0;i<5;i++){
var myObject={'secret':i};
//不要将错误或结果传递给magic
//在这个范围内的任何地方都没有定义它们
find({number:param[i]},magic(myObject));
}
}

err
results
未定义,因为您正在将名为
err
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));
    }
}
功能剂量测量(参数){
var magic=函数(上下文){
//在这里返回一个函数
返回函数(错误、结果){
if(err){console.log('fail');}
否则{
//利用上下文和结果来施展魔法
}
};
}
对于(变量i=0;i<5;i++){
var myObject={'secret':i};
//不要将错误或结果传递给magic
//在这个范围内的任何地方都没有定义它们
find({number:param[i]},magic(myObject));
}
}

是!我仍在努力掌握javascript的古怪之处。谢谢,是的!我仍在努力掌握javascript的古怪之处。谢谢