2016-07-18 2 views
0

Я пытаюсь сохранить дату в MongoDB с помощью MomentJS. Я хочу сохранить текущую дату/время плюс 1 час. Для этого я использую следующий код (я использую секунды, так как это число будет выведено из API, который дает число в секундах, как только я буду разбирать основы. Я изменил значение 3600 на переменную):Дата NodeJS для MongoDB с использованием моментов

var expire = moment().add(3600, 's').format(); 
User.update({email: req.user}, {$set: {expire: expire}}, function(err, update) { 
    if(err) throw err; 
}); 

Если I console.log значение expire, оно показывает время с добавлением 1 часа, как и ожидалось. Проблема в том, что то, что он сохранил в моей БД, - это текущее время БЕЗ часа, добавленного к нему.

Любая помощь была бы принята с благодарностью.

+0

Я отправляю строковые значения в mongodb и никогда не испытывал никаких проблем. Попробуйте tostring с этой переменной expire. –

ответ

1

В mongodb, время сравнения должно использовать utc time и Date obj. Потому что var expire = moment().add(3600, 's').format(); возвращает строку не obj. U должен преобразовать его в Date obj, чтобы mongodb мог это знать. Что нужно сделать, это очень просто.

var expire = moment().add(3600, 's').format().toDate() 

В самом деле, если U хотите сравнить время в Монго с GT и ЛТ, я полагаю, U изменить время по Гринвичу. let time = moment().utc(yourTime, "YYYY-MM-DD HH:mm:ss").toDate()

+0

Хотя этот фрагмент кода может решить вопрос, включая объяснение [действительно помогает] (// meta.stackexchange.com/q/114762), чтобы улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, а не только на человека, который спрашивает сейчас! Пожалуйста, отредактируйте свой ответ, чтобы добавить объяснение, и укажите, какие ограничения и допущения применяются. –

Смежные вопросы