Estoy tratando de usar MomentJS para obtener la hora UTC no localizada y establecerla como predeterminada para los nuevos documentos creados en Mongo.
var SubFavoriteSchema = new Schema({ user : { type: String, ref: 'Account'}, date : {type: Date, default: moment.utc()} });El problema es que moment.utc() devuelve la fecha en que se inició el servidor Node. Por lo tanto, si inicio el servidor el 1 de enero, todos los documentos obtienen una hora UTC del 1 de enero, incluso si el documento se creó el 10 de enero.
¿Alguna idea de por qué sigue obteniendo la hora de inicio del servidor en lugar de la hora actual?
El problema es que está llamando a la función moment.utc() (una vez) al crear el esquema, por lo que se usa el mismo valor resultante al crear nuevos documentos.
Sin embargo, no necesita usar el moment para esto, default: Date.now hará lo que quiera ya que esa función devuelve la hora UTC actual. Tenga en cuenta que no llama a la función now , simplemente pasa la función en sí. Esa es la diferencia clave.
Necesita usar una función de fábrica para eso.
var currDate(){ return function(){ return moment.utc(); } } var SubFavoriteSchema = new Schema({ user : { type: String, ref: 'Account'}, date : {type: Date, default: currDate()} });