Есть ли простой способ сделать 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)
}

посетите эту ссылку для formate