2011-10-06 10 views

risposta

15

Se si desidera solo un uso ISO String:

new Date().toISOString() 
+1

Mi dispiace, non credo che questo risponde alla domanda. La domanda non era "come posso creare una stringa ISO". –

+3

Ecco come si crea una stringa ISO valida da inserire in Mongo. – greenimpala

6

In pochi giorni Mongo sta per annunciare la nuova versione 2.6 (attualmente è possibile scaricare la versione sperimentale 2.5.x). Tra many other features è possibile utilizzare $currentDate che sta per fare esattamente la cosa che si desidera:

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

Un modo per realizzare questo è quello di utilizzare Mongoose Middleware e aggiornare il campo di pre-save.

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

Sembra, tuttavia, che il middleware non è sempre invocato:

Note findAndUpdate()

pre e post non sono chiamati per le operazioni di aggiornamento eseguito direttamente sul database, incluso Model.update, .findByIdAndUpdate, .findOneAndUpdate, .findOneAndRemove e .findByIdAndRemove. ordine per utilizzare il middleware pre o post, Si dovrebbe find() il documento e chiamare le funzioni init, validate, o remove sul documento. Vedi explanation.

Aggiornamento: Vai a questa domanda "add created_at and updated_at fields to mongoose schemas"

+1

È ora possibile richiamare il middleware per 'update' in> MongooseJS 4.0 – steampowered

Problemi correlati