2014-09-26 4 views
0

Ниже приводится мой код, который должным образом не обновляя dates-Даты не обновляется должным образом в nodeJS

exports.saveWeekAvailability = function(req, res){ 
    console.log("-- SAVE WEEK AVAILABILITY --"); 
    weekData = req.body; 
    weekData.sort(function(a, b){ var dateA = new Date(a.currDate); var dateB = new Date(b.currDate); return dateA-dateB;}); 
    var x=0; 
    var resultArr = []; 
    for(var i=0; i< weekData.length; i++) { 
    (function(i) {     
     Availability.findOne({employee_id:weekData[i].employee_id,currDate:weekData[i].currDate},function(err,response){ 
     console.log("============= RESPONSE =============="); 
     console.log("I: "+i); 
     console.log("X: "+x); 
     if (null !== response) { 
      response.is_morning_scheduled = weekData[x].is_morning_scheduled; 
      response.is_night_scheduled = weekData[x].is_night_scheduled; 
      console.log("-----------IN NULL IN NULL IN NULL---------------"); 
      console.log(response); 
      // CODE TO UPDATE 
     } 
     else{ 
      addAvailability(x); 
     } 
     x++; 
     }) 
    })(i); 
    } 
}; 

Сценарий -

Даты Tue, 07 Oct 2014 18:30:00 GMT & Wed, 08 Oct 2014 18:30:00 GMT мое утро график установлен верно, как - is_morning_scheduled: true.

Но в ответ вы можете проверить, что оно принимает true на дату currDate: Sat Oct 11 2014 00:00:00 GMT+0530 (IST) & currDate: Sat Oct 07 2014 00:00:00 GMT+0530 (IST).

Дайте мне знать, что я делаю неправильно здесь с концепцией.

weekData -

[ 
    { 
    currDate: 'Sat, 04 Oct 2014 18:30:00 GMT', 
    is_morning_scheduled: false, 
    is_night_scheduled: false, 
    employee_id: '53d89f0e5bfa37320be2d1f7', 
    }, 
    { 
    currDate: 'Sun, 05 Oct 2014 18:30:00 GMT', 
    is_morning_scheduled: false, 
    is_night_scheduled: false, 
    employee_id: '53d89f0e5bfa37320be2d1f7', 
    }, 
    { 
    currDate: 'Mon, 06 Oct 2014 18:30:00 GMT', 
    is_morning_scheduled: false, 
    is_night_scheduled: false, 
    employee_id: '53d89f0e5bfa37320be2d1f7', 
    }, 
    { 
    currDate: 'Tue, 07 Oct 2014 18:30:00 GMT', 
    is_morning_scheduled: true, 
    is_night_scheduled: false, 
    employee_id: '53d89f0e5bfa37320be2d1f7', 
    }, 
    { 
    currDate: 'Wed, 08 Oct 2014 18:30:00 GMT', 
    is_morning_scheduled: true, 
    is_night_scheduled: false, 
    employee_id: '53d89f0e5bfa37320be2d1f7', 
    }, 
    { 
    currDate: 'Thu, 09 Oct 2014 18:30:00 GMT', 
    is_morning_scheduled: false, 
    is_night_scheduled: false, 
    employee_id: '53d89f0e5bfa37320be2d1f7', 
    }, 
    { 
    currDate: 'Fri, 10 Oct 2014 18:30:00 GMT', 
    is_morning_scheduled: false, 
    is_night_scheduled: false, 
    employee_id: '53d89f0e5bfa37320be2d1f7', 
    } 
] 

Теперь после того, как утешает response я получаю выход, как -

============= RESPONSE ============== 
I: 0 
X: 0 
-----------IN NULL IN NULL IN NULL--------------- 
{ 
    _id: 5424f0b679e352ff0ce0a556, 
    currDate: Sun Oct 05 2014 00:00:00 GMT+0530 (IST), 
    is_morning_scheduled: false, 
    is_night_scheduled: false, 
    employee_id: 53d89f0e5bfa37320be2d1f7, 
    __v: 0 
} 
============= RESPONSE ============== 
I: 5 
X: 1 
-----------IN NULL IN NULL IN NULL--------------- 
{ 
    _id: 5424f0b679e352ff0ce0a55b, 
    currDate: Fri Oct 10 2014 00:00:00 GMT+0530 (IST), 
    is_morning_scheduled: false, 
    is_night_scheduled: false, 
    employee_id: 53d89f0e5bfa37320be2d1f7, 
    __v: 0 
} 
============= RESPONSE ============== 
I: 1 
X: 2 
-----------IN NULL IN NULL IN NULL--------------- 
{ 
    _id: 5424f0b679e352ff0ce0a557, 
    currDate: Mon Oct 06 2014 00:00:00 GMT+0530 (IST), 
    is_morning_scheduled: false, 
    is_night_scheduled: false, 
    employee_id: 53d89f0e5bfa37320be2d1f7, 
    __v: 0 
} 
============= RESPONSE ============== 
I: 6 
X: 3 
-----------IN NULL IN NULL IN NULL--------------- 
{ 
    _id: 5424f0b679e352ff0ce0a55c, 
    currDate: Sat Oct 11 2014 00:00:00 GMT+0530 (IST), 
    is_morning_scheduled: true, 
    is_night_scheduled: false, 
    employee_id: 53d89f0e5bfa37320be2d1f7, 
    __v: 0, 
} 
============= RESPONSE ============== 
I: 2 
X: 4 
-----------IN NULL IN NULL IN NULL--------------- 
{ 
    _id: 5424f0b679e352ff0ce0a558, 
    currDate: Tue Oct 07 2014 00:00:00 GMT+0530 (IST), 
    is_morning_scheduled: true, 
    is_night_scheduled: false, 
    employee_id: 53d89f0e5bfa37320be2d1f7, 
    __v: 0 
} 
============= RESPONSE ============== 
I: 3 
X: 5 
-----------IN NULL IN NULL IN NULL--------------- 
{ 
    _id: 5424f0b679e352ff0ce0a559, 
    currDate: Wed Oct 08 2014 00:00:00 GMT+0530 (IST), 
    is_morning_scheduled: false, 
    is_night_scheduled: false, 
    employee_id: 53d89f0e5bfa37320be2d1f7, 
    __v: 0 
} 
============= RESPONSE ============== 
I: 4 
X: 6 
-----------IN NULL IN NULL IN NULL--------------- 
{ 
    _id: 5424f0b679e352ff0ce0a55a, 
    currDate: Thu Oct 09 2014 00:00:00 GMT+0530 (IST), 
    is_morning_scheduled: false, 
    is_night_scheduled: false, 
    employee_id: 53d89f0e5bfa37320be2d1f7, 
    __v: 0 
} 

ответ

2

Вызов Availability.findOne(... использует асинхронную функцию обратного вызова и, таким образом, не гарантируется пожар в правильный порядок, поэтому причина, по которой вы видите переменную i, поднимается в странном порядке (0, 5, 1, 6, 2, 3, 4) и отличается от x переменная, которая увеличивается в порядке (0, 1, 2, 3, 4, 5, 6).

Почему вы даже переменную x, просто использовать i вместо, так как вы уже окружив его закрытия, а именно:

Availability.findOne({ 
    employee_id: weekData[i].employee_id, 
    currDate: weekData[i].currDate 
}, 
function(err, response) { 
    console.log("============= RESPONSE =============="); 
    console.log("I: " + i); 

    if (null !== response) { 
     response.is_morning_scheduled = weekData[i].is_morning_scheduled; 
     response.is_night_scheduled = weekData[i].is_night_scheduled; 

     console.log("-----------IN NULL IN NULL IN NULL---------------"); 
     console.log(response); 
     // CODE TO UPDATE 
    } 
    else { 
     addAvailability(i); 
    } 
}); 
+0

Thx для point.its рабочего сейчас :) +1 и зеленый знак :) – Trialcoder

Смежные вопросы