如何在每次保存时使用Mongoose模式中的当前date更新属性?

在我的数据库集合中,每当使用当前date时间更新logging时,我想更新一个“lastChanged”字段。 我希望它与mongoose的默认date相同的格式,如:

ISODate("2011-10-06T14: 01: 31.106Z")

任何智慧的话语?

如果你只是想要一个ISOstring使用:

 new Date().toISOString() 

在几天内,Mongo将发布新的2.6版本(目前您可以下载实验版本2.5.x)。 在许多其他function中,您可以使用$ currentDate ,它将完成您想要的任务:

 db.users.update( <criteria>, { $currentDate: { yourField: true}, } ) 

完成这个的一个方法是使用Mongoose中间件并更新字段预保存。

 var mongoose = require('mongoose'); var Schema = mongoose.Schema; //schema var SomethingSchema = new Schema({ text: {type: String}, createdAt: {type: Date, default: Date.now}, updatedAt: {type: Date, default: Date.now} }); //middle ware in serial SomethingSchema.pre('save', function preSave(next){ var something = this; something.updatedAt(Date.now()); next(); }); 

但是,似乎并不总是调用中间件:

findAndUpdate()的注释

prepost不需要直接在数据库上执行的更新操作,包括Model.update.findByIdAndUpdate.findOneAndUpdate.findOneAndRemove.findByIdAndRemove以利用prepost中间件,您应该find()该文档,调用initvalidatesaveremove文档上的函数。 见解释 。

更新:看到这个问题“ 添加created_at和updated_at领域mongoose模式 ”