猫鼬保存不更新文档日期类型字段

时间:2019-05-04 18:37:07

标签: node.js mongodb mongoose

我正在尝试使用mongoose find然后保存功能更新MongoDB文档。除具有日期类型的字段(默认值:Date.now)外,所有字段值都会更新并保存为新值。 该代码可在我的机器上运行,但是当我在AWS(ubuntu EC2)上运行相同的代码时,相同的代码将无法正常工作。

模式参考:

var subscriber = new mongoose.Schema({

    name: {
        type : String,
        required :true
    },

    phone: {
        type : String,
        required :true,
        unique: true
    },

    expire: {
        type: Date,
        default: Date.now
    },

    created_at: {
        type: Date,
        default: Date.now
    }
});

下面的node.js代码段->

var updateMySubscriber = function(bodyToUpdate,cb){
    subscriber.findOne({_id : bodyToUpdate.id}, function (err, sub) {
        console.log(err, sub._id);
        if(err){
            cb(err,null);
        }else{
           if(sub) {
             console.log("Updating subscriber...");
             if(bodyToUpdate.expire )
                   sub.expire = bodyToUpdate.expire;
             if(bodyToUpdate.name)
                   sub.name = bodyToUpdate.name;
             if(bodyToUpdate.phone)
                   sub.phone = bodyToUpdate.phone;

               sub.updated_at = new Date().getTime();
               console.log("+===>",sub);
               sub.save(function (err, done) {
                   if (err) {
                       cb(err, null);
                   } else {
                       cb(null, true);
                   }
               });
           }
        });

bodyToUpdate JSON请求的样本值->

{ id: '5035e6da6d973c872b038d91',
  phone: '9876543210',
  name: 'alex',
  is_active: true,
  expire: '2020-08-30T18:30:00.000Z',
  created_at: '2016-08-24T05:52:53.440Z' 
}

理想情况下,.save函数应该能够使用新提供的值来更新到期字段。

0 个答案:

没有答案