格式化返回Sequelize中列的类型

时间:2018-04-16 07:20:49

标签: sql-server node.js sequelize.js

我使用Sequelize来说明我的一个列的类型如下:

userTime: DataTypes.TIME 

这将MS ​​SQL中的列声明为time(7)格式 我将数据作为字符串添加到相应的列。例如:“12:00”
但是,当我从数据库中检索数据时,它会以下列格式出现:

userTime: "1970-01-01T12:00:00.000Z" 

如何使用Sequelize将输出更改为以下格式:
userTime:“12:00”

是否有可能在Sequelize中使用返回类型的FORMAT?

2 个答案:

答案 0 :(得分:1)

我建议您创建一个getterMethods,像virtual field一样工作,您将在每个查询中获得。

var User = sequelize.define('users',{
    userTime:{
        type: DataTypes.TIME    
    },
    name:{
        type: db.Sequelize.STRING,
        allowNull: false
    },
    image: {
        type: db.Sequelize.STRING,
        allowNull: true
    },
    .... // other fields
},{
    getterMethods:{
        modifiedUserTime() {
            return moment(this.userTime); // modify the time as you want
        }
    }
});

答案 1 :(得分:0)

实际上,我解决了这个问题,比我想象的要容易。

userTime: {
    type: DataTypes.TIME,
    allowNull: true,
    get() {
      const userTime = this.getDataValue('userTime');
      if(userTime == null) return  userTime;
      const time = new Date(userTime);
      let hours = addZero(time.getUTCHours());
      let minutes = addZero(time.getUTCMinutes());
      let combinedTime = hours + ":" + minutes;
      return combinedTime;
    }
}   
function addZero(i) {
if (i < 10) {
    i = "0" + i;
}
return i;
}