Есть ли простой способ сделать Sequelize возвращать поля даты/времени в определенном формате?
нам нужно упорядочить даты возврата в определенном формате, а не по умолчанию. Насколько я могу судить, нет никакого способа настроить это в options или любым другим способом. За исключением ручного обновления дат каждый раз после их извлечения, кто-нибудь смог легко решить эту проблему? Или я что-то упускаю?
3 ответов
вы можете определить пользовательские методы экземпляра getDate / setDate, которые будут переводить дату между sequelize внутреннего представления и желаемого формата, Как так http://sequelize.readthedocs.org/en/latest/docs/models-definition/index.html (см. раздел "расширение моделей")
вы можете использовать Sequelize fn
метод. От ссылка на API на fn
функция поможет создать объект, представляющий функцию SQL в вашем запросе.
например:
model.findAll({
attributes: [
'id',
[sequelize.fn('date_format', sequelize.col('date_col'), '%Y-%m-%d'), 'date_col_formed']
]})
.then(function(result) {
console.log(result);
});
возвращает значения данных:
[
{"id": 1, "date_col_formed": "2014-01-01"},
{"id": 2, "date_col_formed": "2014-01-02"}
// and so on...
]
в случае модели, которую мы создаем с помощью Sequelize CLI попробуйте что-то вроде этого
var sequelize= require('../models');
model.findAll({
attributes: [
'id',
'title'
[sequelize.Sequelize.fn('date_format', sequelize.Sequelize.col('col_name'), '%d %b %y'), 'col_name']
]}.then(function(result))
{ // dateformate=04 Nov 2017
console.log(result)
}