3 个回答
新手上路,请多包涵

用迁移建表时默认生成的是datetime类型,每次新增数据和更新数据时表中的时间都会自动更新

QQ图片20200103224352.png
QQ图片20200103224705.png

如果想变成10位的时间戳应该如何来写?
每次新增数据和更新数据时表中10位的时间戳也更新

Sequelize.DATEONLY

应该是你要的效果;
通过hooksbeforeValidate这个事件,根据是否是isNewRecord设置时间戳。

const Sequelize = require('sequelize');
var sequelize = new Sequelize('dbname', 'username', 'password', {
    host: 'localhost',
    dialect: 'mysql',
    pool: {
        max: 5,
        min: 0,
        idle: 10000
    }
});

function defineModel(name, attributes) {
    attrs.id = {
        type: Sequelize.INT,
        primaryKey: true,
        autoIncrement: true,
    };
    attrs.createdAt = {
        type: Sequelize.BIGINT,
        allowNull: false
    };
    attrs.updatedAt = {
        type: Sequelize.BIGINT,
        allowNull: false
    };
    return sequelize.define(name, attrs, {
        tableName: name,
        timestamps: false,
        hooks: {
            beforeValidate: function (obj) {
                if (obj.isNewRecord) {
                    let now = Date.now();
                    obj.createdAt = now;
                    obj.updatedAt = now;
                } else {
                    obj.updatedAt = Date.now();
                }
            }
        }
    });
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题