2016-08-09 2 views
0

я пытаюсь обновить коллекцию MongoDB без успеха на некотором значении, его обновление одно поле, а не другой, вот мой код,
схема:node.js мангуст не может обновить некоторые поля

var clientSchema = new mongoose.Schema({ 
emailaddress: {type: String, index: {unique: true}} 
, firstname: String 
, lastname: String 
, domainname: String 
, company: String 
, password: String 
, plan: String 
, datePayment: {type: Date, default: Date.now} 
, experationPayment: {type: Date, default: Date.now} 
}); 

код, используемый для обновления коллекции

model.findById(id, function (error, data) { 
        if (error) { 
         ... 
        } 
        else { 
         if (!data) { 
          ... 
         } 
         else { 
          console.log('data before:', data); 
          var date = new Date(); 
          var expTime = data.experationPayment; 
          var comp = new Date(); 
          if (date.getTime() > expTime.getTime()) { 
           comp = date; 
          } 
          else { 
           comp = expTime; 
          } 
          comp.setMonth(comp.getMonth() + month); 
          data.plan = plan; 
          data.datePayment = date; 
          data.experationPayment = comp; 
          console.log('data after:', data); 
          data.save(function (error) { 
          if (!error) { 
            console.log('plan successfully updated ');         res.redirect('/dashboard?message=plan successfully updated'); 
            } 
            else { 
             res.json({ 
              message: 'error your plan wasnt saved.' 
             }); 
            } 
           }); 
         } 
        } 
       }); 

и вот результат консоли, с мангуст отладки включен

Mongoose: clients.findOne ({_ID: ObjectId ("57aa0403b8f3786d09d8c626")}) {поля: неопределенные}

данных перед: {datePayment: 2016-08-09T18: 03: 07.501Z,
experationPayment: 2016 -09-09T16: 37: 34.654Z,
план: 'стартер',
__v: 0,
пароль: 'а',
EMAILADDRESS: 'а',
Lastname: 'а',
имя: 'a',
_id: 57aa0403b8f3786d09d8c626}

данные после того, как: {datePayment: 2016-08-09T18: 46: 10.131Z,
experationPayment: 2017-09-09T16: 37: 34.654Z,
план: 'стартер',
__v: 0,
пароль: 'а',
EMAILADDRESS: 'а',
Lastname: 'а',
Firstname: 'а',
_id: 57aa0403b8f3786d09d8c626}

Mongoose: clients.update ({_id: ObjectId ("57aa0403b8f3786d09d8c626")}) {'$ set': {datePayment: new Date ("Вт, 09 авг. 2016 18:46:10 GMT ")}}

план успешно обновлен

Mongoose: clients.findOne ({_id: ObjectId (" 57aa0403b8f3786d09d8c626")}) {поля не определено}

ответ

0

я нашел эту проблему, var expTime = data.experationPayment; expTime это строка объект не является объектом дата, код должен быть var expTime = new Date(data.experationPayment);

и теперь я мог бы использовать expTime.getTime()

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