Ich benutze nodejs mit mondodb aber mit einer seltsamen Situation ohne Fehler konfrontiert.Funktion nicht aufgerufen nach Rückruf
Ich rufe die Funktion updateUsers mit dem Rückruf, aber die Funktion updateDashboard wird überhaupt nicht aufgerufen, auch wenn die Funktion updateUsers erfolgreich beendet wurde. Die Codeblöcke sind unten. Es werden auch keine Fehler gemeldet.
updateUsers(data,dashboardDayData.key,function(err,doc){
updateDashboard(dashboardYearData,data.type,1,doc,function(err){console.log("Got executed");});
});
function updateUsers(req,dateKey,callback){
var yyyy = parseInt(dateKey.toString().substring(0,4));
var mm = parseInt(dateKey.toString().substring(4,6));
var dd = dateKey.toString().substring(6,8);
switch(req.type){
case Collection["begin"]:
Model.User.findById(req.val.did,function(err,doc){
if(!err){
if(doc === null || !doc){
req.type = Collection["user"];
req.val.ts = 1;
req.val.tts = 0;
event = EventFactory.getEvent(req);
event.save(function (err) {
if (err) {
logger.error(common.getErrorMessageFrom(err));
return;
}
var push = {};
push['_'+yyyy] = JSON.parse('{"_id":'+parseInt(mm.toString().concat(dd))+',"tse":1,"tts":0}');
Model.User.findByIdAndUpdate(req.val.did,{$push:push},{upsert:true},function(err,doc){
console.log("err "+err);
console.log("doc "+doc);
if(err){
logger.error(common.getErrorMessageFrom(err));
return;
}
callback(err,1);
});
});
}
function updateDashboard(dashboardData,eventType,valueIncrement,newUserIncrement,callback){
switch(eventType){
case Collection["begin"]:
console.log(dashboardData);
Model.Dashboard.findByIdAndUpdate(dashboardData,{$inc:{'val.tse':valueIncrement,'val.tnu':newUserIncrement}},{upsert:true},function(err,doc){
if(err){
logger.error(err);
}
callback(err);
});
break;
so, erhalten Sie die Err und Doc-Konsole Protokolle passieren? –
Ja, es passiert. Der Ablauf ist wie erwartet, wobei err und doc nach der Funktion Model.User.findByIdAndUpdate gedruckt werden und der Callback (err, 1) wird ausgeführt, aber das updateDashboard wird nicht ausgeführt. –
Sie gelangen also zur anonymen Funktion in Zeile 1 des von Ihnen geposteten Codes, aber 'updateDashboard' wird nie aufgerufen? Oder wird der Callback von updateDashboard nie aufgerufen? –