2017-01-16 2 views
1

Я пытаюсь использовать MomentJS для получения нелокализованного времени UTC и установить его как значение по умолчанию для новых документов, созданных в Mongo.Использование MomentJS для даты по умолчанию в документе MongoDB

var SubFavoriteSchema = new Schema({ 
    user : { type: String, ref: 'Account'}, 
    date : {type: Date, default: moment.utc()} 
}); 

Проблема заключается в том, что момент.utc() возвращает дату запуска сервера Node. Таким образом, если я запустил сервер 1 января, все документы получат UTC-время 1 января, даже если документ создан 10 января.

Любая идея, почему он продолжает получать время запуска сервера вместо текущего времени ?

ответ

1

Проблема заключается в том, что вы звоните в moment.utc() функцию (один раз) при создании схемы, так же результирующее значение используется при создании новых документов.

Для этого вам не нужно использовать moment, default: Date.now будет делать то, что вы хотите, так как эта функция возвращает текущее время UTC. Обратите внимание, что вы не звонитеnow функции, вы просто передаете функцию. Это ключевое различие.

0

Для этого вам необходимо использовать заводскую функцию.

var currDate(){ 
    return function(){ 
    return moment.utc(); 
    } 
} 

var SubFavoriteSchema = new Schema({ 
    user : { type: String, ref: 'Account'}, 
    date : {type: Date, default: currDate()} 
}); 
Смежные вопросы