Discuss
/
JavaScript
/
isNewRecord 一直是true,而且这里的id也一直是默认是为null
isNewRecord 一直是true,而且这里的id也一直是默认是为null
Topic source查看了官方文档,isNewRecord 不代表是否是添加和修改的标识。如果想在修改或增加前做动作,要写下面两个钩子:
hooks: {
beforeCreate(instance, options) {
if (!instance.id) {
instance.id = generateId()
}
const now = Date.now()
instance.createAt = now
instance.updateAt = now
},
c(instance) {
instance.updateAt = Date.now()
}
}
有一点需要注意:必须要 设置
individualHooks: true
beforeUpdate钩子才会生效
return await myTest.update(
{ testName: 'xxxx' },
{
where: {
id: '567f41c4ceb7447aacf5900b07dde205'
},
individualHooks: true
})
hooks: {
beforeCreate(instance, options) {
if (!instance.id) {
instance.id = generateId()
}
const now = Date.now()
instance.createAt = now
instance.updateAt = now
},
beforeUpdate(instance) {
instance.updateAt = Date.now()
}
}
抱歉,beforeUpdate 没有写完整
这显然是个属性而非方法,廖老湿可能没注意,改成属性访问就行
isNewRecord官方记载:https://sequelize.org/v3/api/instance/#isnewrecord-boolean
hooks: {
beforeValidate: function(obj) {
let now = Date.now();
if (obj.isNewRecord) {
if (!obj.id) {
obj.id = generateId()
}
obj.createAt = now;
obj.updateAt = now;
obj.version = 0;
}else {
obj.updateAt = Date.now();
obj.version++;
}
}
}
- 1
郭浩伟77700
这个isNewRecord很有歧义,再官网上看了好久,才找出来一个比较好的解决方案。 推送一下廖大github pr