我正在尝试使用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函数应该能够使用新提供的值来更新到期字段。