мангуст, как установить формат даты в модели

Я новичок в мангусте. Я использую "Дата" в качестве типа для столбца "holidayDate". Я хочу хранить только дату, а не время в моем столбце "holidayDate", поэтому есть ли способ определить формат даты в модели домена, поэтому, когда мой домен сохраняет мой "holidayDate" значение столбца будет сохранено в соответствии с форматом даты модели домена.

var HolidaySchema = new Schema({
    holidayName: {
        type: String,
        default: '',
        required: 'Please fill holiday name',
        trim: true
    },
    holidayDate: {
        type: Date,
    required: 'Please fill From Date'
    }

});

mongoose.model('Holiday', HolidaySchema);

person Piyush Chaudhari    schedule 28.05.2015    source источник


Ответы (2)


Базовый механизм хранения MongoDB (BSON) не имеет типа для даты без времени, только полные даты (см. эту страницу для получения подробной информации о типах BSON в документации MongoDB).

В результате вам нужно будет обрабатывать его в своем коде, гарантируя, что время всегда установлено на (например) 00:00:00 при вставке и запросе или путем сохранения его как другого типа (например, строка yyyy-mm-dd или целое число). Какой из них является наиболее подходящим, будет зависеть от ваших требований к запросу и использованию этой даты.

person Mark Hughes    schedule 28.05.2015

Из документов, если в вашей схеме у вас есть поле типа даты, например

 holidayDate: {
        type: Date,
    required: 'Please fill From Date'
    }

и когда вы создаете свой праздничный документ, Mongoose преобразует значение в собственную дату JavaScript, используя конструктор Date()

const holiday = new Holiday({
holidayDate:'2012-12-19'
});

holiday.holidayDate instanceof Date; // true

а недопустимая дата приведет к CastError при проверке документа.

const holiday = new Holiday({
holidayDate:'invalid date'
});

holiday.holidayDate instanceof Date; // false
holiday.validateSync().errors['lastActiveAt']; // CastError
person Deeksha Sharma    schedule 20.06.2019