2011-10-06 14 views

Respuesta

15

Si lo que desea es un uso ISO Cadena:

new Date().toISOString() 
+1

Lo sentimos, no creo que esto responde a la pregunta. La pregunta no era "¿cómo creo una cadena ISO?". –

+3

Esta es la forma de crear una cadena ISO válida para insertar en Mongo. – greenimpala

6

En pocos días Mongo va a anunciar una nueva versión 2.6 (actualmente se puede descargar la versión 2.5.x experimental). Entre many other features puede utilizar $currentDate que se va a hacer exactamente lo que quiere:

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

Una forma de lograr esto es utilizar Mongoose Middleware y actualizar el campo antes de guardar.

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(); 
}); 

Parece, sin embargo, que el middleware no siempre se invoca:

Notas sobre findAndUpdate()

pre y post no son llamados para operaciones de actualización ejecutadas directamente en la base de datos, Incluyendo Model.update, .findByIdAndUpdate, .findOneAndUpdate, .findOneAndRemove, y .findByIdAndRemove. Ordenan utilizar middleware pre o post, usted debe find() el documento, y llamar a los init, validate, save o remove funciones en el documento. Ver explanation.

Actualización: Ver esta pregunta "add created_at and updated_at fields to mongoose schemas"

+1

Ahora puede invocar middleware para 'update' en> 4,0 MongooseJS – steampowered

Cuestiones relacionadas