#javascript #node.js #mongodb #mongoose
#javascript #node.js #mongodb #mongoose
Вопрос:
Каждый раз, когда я сохраняю дату в Mongoose, она заканчивается как строка.
let newDate = new Date().toISOString();
let thing = await Thing.findOne({});
things.details.expirationDate = newDate;
await thing.save();
Я могу подтвердить, что в базе данных оно распознается как строка, а не как объект даты.
Как мне сохранить это значение в объекте date? thing.details
это смешанный тип схемы.
Комментарии:
1. Это то, что
.toISOString()
делает, создает строку. Вы можете сделатьlet newDate = new Date()
, чтобы сохранить объект как BSON напрямую2. Круто, если вы хотите опубликовать это в качестве ответа, я приму его. Думал, что я пробовал собственные даты раньше, но, похоже, это не работает хорошо, спасибо.
Ответ №1:
Метод .toISOString()
создает строку из заданной даты в формате
2016-10-05T14:48:00.000
и тогда эта строка сохраняется в базе данных, а не в качестве объекта
Чтобы сохранить объект date, вы можете просто сделать
let newDate = new Date();
и Moongose должен выполнить преобразование типов между Date
объектом javascripts и ISODate
обычно используемым MongoDB.
Комментарии:
1. со мной этого не происходит. новая дата() сохраняется в виде строки. В моей модели это выглядит так:
date : { type : Date, required : true, index: true }