sequelize操作mysql数据库时,时间的处理方案

826 阅读1分钟

1 . 配置timestamps: true的情况

createdAt: {        type: Sequelize.DATE,        allowNull: false,        get() {            // 不做判断时候在更新数据时候会报异常      // 转换时间戳            return this.getDataValue('createdAt') && this.getDataValue('createdAt').getTime()        },        set(val) {            return this.setDataValue('createdAt', val)        }    },    updatedAt: {        type: Sequelize.DATE,        allowNull: false,        get() {            // 转换时间戳            return this.getDataValue('updatedAt').getTime()        },        set(val) {            return this.setDataValue('updatedAt', val)        }    }
弊端

查询之后我们想要返回给用户的名称往往不想要createdAt和updatedAt,而是我们自己定义的

2 . 配置timestamps: false的情况

createTime: {        type: Sequelize.DATE,        // allowNull: false,        defaultValue: Sequelize.NOW,        field: 'create_time',        get() {            return this.getDataValue('createTime').getTime()        }    },    updateTime: {        type: Sequelize.DATE,        // allowNull: false,        defaultValue: Sequelize.NOW,        field: 'update_time',        get() {            return this.getDataValue('updateTime').getTime()        }    },        
注意点 : 在更新时候对updateTime要及时更新
UserModel.update(    {       ...        updateTime: new Date() // 及时更新时间    }, {        where: {            ...        }    });
好处 : createTime和updateTime都是我们自己想取得名字,而不再拘束于createdAt和updatedAt