在mongoose异步回调函数中调用参数化回调函数变得“未定义”

时间:2015-07-02 03:27:59

标签: javascript mongodb callback mongoose scope

我在mongoose的另一个回调中调用回调时遇到了一个奇怪的问题。 设置:MEAN Stack。

myFunc = function (cb) {
        var projection = {
        '_id': 0,
        'var1': 1,
        'var2': 1
    }

    var order = {
        'var1': 1
    }

    User.find({})
        .select(projection).sort(order)
        .exec(function(err, docs){
            if(err){
                console.log(err);
                cb(err,docs);
            } else {
                console.log(docs);
                cb(err,docs);
            }
        });
};

转到cb(错误,文档)将导致的行 " ReferenceError:cb未定义"

奇怪的部分是 我有更深层嵌套回调的函数,可以调用" cb" normaly。

myFunc = function(cb){
    model1.count({var1:'test'}, function (err, count) {
        if(count) {
            model2.findOne({dat1:'hoho'}, function (err, doc){
                if (err) {
                    console.error(err);
                    cb(err,doc);
                } else {
                    cb(err,doc);
                }
            });                 
        } else {
            cb({message: "No items found"}, null);
        }    
    })
}

上面的代码将被调用......

function init(something){
    myfunc(function(err, doc) {
        if (err){
            console.log(err.message);
        } else {
            //do something about doc
        }
    });
}

1 个答案:

答案 0 :(得分:0)

嗯,似乎调用函数没有正确遵循规则。

它叫

myFunc(json, function(err,doc){
    //do something
})

错误的参数计数...