应该是你要的效果;
通过hooks
的beforeValidate
这个事件,根据是否是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();
}
}
}
});
}
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
1 回答3.4k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
用迁移建表时默认生成的是datetime类型,每次新增数据和更新数据时表中的时间都会自动更新
如果想变成10位的时间戳应该如何来写?
每次新增数据和更新数据时表中10位的时间戳也更新