Я полностью осознаю, что здесь есть вопросы, которые пытаются решить проблему, которую я поднимаю здесь.
Я прошел через все из них, пытаясь реализовать ответы, которые даны в этих темах, но не увенчались успехом.Когда я пытаюсь реализовать async.waterfall (), я получаю сообщение об ошибке: Callback уже был вызван.
Я надеюсь получить некоторые подсказки, откуда я мог бы заставить это работать.Спасибо.
getTodayDetail: function(cId,endTime,user,callback){
console.log('Lets begin here');
console.log('clinic id :'+cId);
console.log('endtime for appoinment '+endTime);
var ett = new Date();
ett.setSeconds(0);
ett.setHours(0);
ett.setMinutes(0);
var cid = cId;
console.log(mongoose.Types.ObjectId.isValid(cid));
//var clinicId = mongoose.Types.ObjectId(clinicId);
//ett.setHours(00,00,1).toISOString();
console.log("Value of et variable after setHours function "+ett);
// var et = moment(endTime).utcOffset("+00:00").format('ddd MMM DD YYYY');
async.waterfall([
function f1 (callback){
console.log('f1 from getTodayDetails '+cid);
console.log("endTime "+endTime);
appointment.find({
clinicId: cid,
endTime: { $gte: ett, $lte: endTime }}, function(err, appointmentdetails){
if(err)
{
callback(err,null);
console.log(err);
return;
}else
{
callback(null, appointmentdetails);
console.log("Success "+appointmentdetails);
}
})
},
function f2(appointmentdetails, callback) {
console.log("from f2 content of appointmentdetails :"+appointmentdetails.data);
for (var i = 0; i<appointmentdetails.length; i++)
{
console.log("Success f2");
Temppay.find(({appointmentId: appointmentdetails[i]._id}),function(err, result2){
if(err)
{
callback(err, null);
console.log(err);
return;
}else{
callback(null, result2, appointmentdetails);
console.log("from f2 content of result2 "+result2.data);
}
})
}
},
function f3(result2, appointmentdetails, callback){
for(var i = 0; i<result2.length; i++)
{
console.log("f3 Success");
patient.find(({"_id": result2[i].patientId}), function(err, result3){
if(err)
{
callback(err, null);
console.log(err);
return;
}
else
{
callback(null, result3,result2,appointmentdetails);
}
})
}
}
], function(err, result3, result2,appointmentdetails){
if(err)
{
console.error(err);
return;
}else
{
var appoinmentoftoday = appointmentdetails;
var paymentdetails = result2;
var patientdetails = result3;
console.log("Today's appointments"+JSON.parse(JSON.stringify(appoinmentoftoday)));
console.log("Today's appointment payment details"+JSON.parse(JSON.stringify(result2)));
console.log("Today's appointments patient details "+JSON.parse(JSON.stringify(result3)));
}
})
},
Это из терминала, что я получаю как ошибку
from f2 content of result2 undefined
0|app | Error: Callback was already called.
0|app | at /home/test_user/Server/node_modules/async/dist/async.js:955:32
0|app | at /home/test_user/Server/app/service/appointmentService.js:1661:29
0|app | at model.Query.<anonymous> (/home/test_user/Server/node_modules/mongoose/lib/model.js:3764:16)
0|app | at /home/test_user/Server/node_modules/kareem/index.js:277:21
0|app | at /home/test_user/Server/node_modules/kareem/index.js:131:16
0|app | at _combinedTickCallback (internal/process/next_tick.js:131:7)
0|app | at process._tickDomainCallback (internal/process/next_tick.js:218:9)