Sequelize:使用Getters修改日期时间戳的输出

时间:2017-08-16 03:00:51

标签: javascript sql node.js postgresql sequelize.js

每次从数据库中选择时,我都需要将signup_at时间戳转换为某种格式。

我想为此使用getter,但它似乎没有返回修改后的数据。它继续返回存储在数据库中的相同日期对象。

var moment = require("moment");

var Referral = sequelize.define("referral", {
    id: {
      allowNull: false,
      type: DataTypes.CHAR(24),
      unique: true,
      primaryKey: true
    },
    active: {
      allowNull: false,
      type: DataTypes.BOOLEAN,
      defaultValue: true
    },
    name: {
      allowNull: true,
      type: DataTypes.STRING
    },
    method: {
      allowNull: true,
      type: DataTypes.STRING
    },
    signup_at: {
      allowNull: false,
      type: DataTypes.DATE,
      get: function() {
        return moment(this.getDataValue("signup_at")).format("MM/DD/YYYY");
      }
    }
});


Referral.findAll({
 where: {
  active: true
 },
 raw: true
}).then(function(referrals) {
  console.log(referrals);
});

1 个答案:

答案 0 :(得分:1)

尝试以下代码

Referral.findAll({
    where: {
        active: true
    },
    raw: false
}).then(function (referrals) {
    referrals.forEach(function (referral, index, array) {
        var value = referral.get();
        console.log(value);
    });
});

似乎raw = true不会使用getter函数。

您可以将raw设为false并明确调用get