Как сохранить значение мангуста как дату?

#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 }