0
我在調用貓鼬的另一個回調中的回調時出現了一個奇怪的問題。 設置:MEAN堆棧。在貓鼬異步回調函數中調用參數化回調函數變得'undefined'
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(ERR,文檔)將導致 「的ReferenceError:CB沒有定義」
怪異的一部分是 我有功能甚至更深嵌套回調可以正常調用「cb」。
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
}
});
}
因此,哪來的CB功能?這就是爲什麼它說cb沒有定義。 –
cb函數將被另一個對象或腳本調用。例子是 功能的init(東西){ MYFUNC(函數(ERR,DOC){ 如果(ERR){ 的console.log(err.message);} 其他{// 做一些文檔 } }); } *請參閱有關 –
問題的更改*我的意思是... cb是由方法調用傳遞的匿名函數。 (參見調用myFunc()的問題的最後部分) –