Javascript 在mongoose异步回调函数中调用参数化回调函数将变成';未定义';
我在调用mongoose的另一个回调中的回调时遇到了一个奇怪的问题。 设置:平均堆栈Javascript 在mongoose异步回调函数中调用参数化回调函数将变成';未定义';,javascript,mongodb,callback,mongoose,scope,Javascript,Mongodb,Callback,Mongoose,Scope,我在调用mongoose的另一个回调中的回调时遇到了一个奇怪的问题。 设置:平均堆栈 myFunc = function (cb) { var projection = { '_id': 0, 'var1': 1, 'var2': 1 } var order = { 'var1': 1 } User.find({}) .select(projection).sort
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” 上面的代码将像这样调用
function init(something){
myfunc(function(err, doc) {
if (err){
console.log(err.message);
} else {
//do something about doc
}
});
}
呃,似乎调用函数没有正确地遵循规则 它叫
myFunc(json, function(err,doc){
//do something
})
参数计数错误…那么,cb函数在哪里?这就是为什么它说cb没有定义。cb函数将被另一个对象或脚本调用。示例是函数init(something){myfunc(函数(err,doc){if(err){console.log(err.message);}否则{//对doc做点什么}}}}}}*请查看问题中的更改*我的意思是。。。cb是由方法调用传递的匿名函数。(参见问题的最后一部分,调用myFunc()的地方)
myFunc(json, function(err,doc){
//do something
})