gpt4 book ai didi

mysql - 仅更新别名 updateAt 属性时, Sequelize 更新不起作用

转载 作者:行者123 更新时间:2023-12-03 22:35:47 25 4
gpt4 key购买 nike

升级到 sequelize v5(来自 4.x.x)后,这个停止工作:

await myModel.update({
date_updated: new Date()
}, {
where: {
id: obj.id
}
});

显然,我的模型中有该字段别名为 updatedAt :
...
updatedAt: 'date_updated',
...

我刚刚发现这是因为 sequelize 的 model.js 中的这个实现:
// only updatedAt is being passed, then skip update
if (
_.isEmpty(valuesUse)
|| Object.keys(valuesUse).length === 1 && valuesUse[this._timestampAttributes.updatedAt]
) {
return [0];
}

...这将跳过更新。

问题是它不会设置 date_updated 属性的值 = 根本不更新实例。它是错误还是功能?任何解决方法的想法?

最佳答案

现在还有一个悬而未决的问题也提到了这种情况:
https://github.com/sequelize/sequelize/issues/3759

正如@MAS 在评论中指出的那样,一种可能的解决方法是 instance.changed('updatedAt', true)

我实际上更喜欢另一个,以避免获取 - 设置 - 保存顺序:

await myModel.update({
// fake to make update happen
id: obj.id
date_updated: new Date()
}, {
where: {
id: obj.id
}
});

关于mysql - 仅更新别名 updateAt 属性时, Sequelize 更新不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60887904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com