Дата в базе данных считается строкой во внешнем интерфейсе

1

Я хочу сохранить элемент date в моей базе данных для журналов моего сайта:

var LogSchema = new mongoose.Schema({
    date: Date,
    ... ...
})

Чтобы создать и сохранить журнал в фоновом режиме:

log.date = new Date()
console.log(log.date.getTime()) // it works well
log.save(...)

Когда я проверяю базу данных в монго, она показывает: "date": ISODate("2017-12-02T01:51:44.540Z").

Однако в интерфейсе, когда я хочу прочитать журнал, log.date.getTime() выдает ошибку TypeError: log.date.getTime is not a function. Кажется, что log.date считается String а не Date.

Кто-нибудь знает, что здесь не так?

Теги:
date
mongoose
momentjs

1 ответ

0
Лучший ответ

Вы смешиваете объект JavaScript Date с строкой даты ISO. Когда вы сохраняете базу данных, она становится строкой. Вам нужно преобразовать строку даты обратно в объект даты javascript, прежде чем вы сможете использовать метод getTime(). Пытаться:

var myDate = new Date(dateStringFromDatabase);
console.log(myDate.getTime());
  • 0
    Можно ли сохранить объект JavaScript Date в базу данных? Я попробовал var LogSchema = new mongoose.Schema({ date: Object }) , он все еще сохраняет строку даты ISO.
  • 1
    Не то, чтобы я знал. Если это возможно, запрос может быть затруднен на основе дат, если они хранятся необычным образом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню