【发布时间】:2021-04-24 05:57:01
【问题描述】:
Sequelize 在某些情况下不会更新 JSON 字段。
例如,我有:
[[1]] (an array inside array)
我正在尝试推动一些事情:
instance.arr[0].push(1); // [[1,1]]
instance.save();
// or:
instance.update({arr: instance.arr});
现在在实例内部我已经更改了数组并且在 db 内部没有任何变化。甚至没有发送查询。 :(
来自sequelize网站:
https://sequelize.org/master/manual/model-instances.html save 方法在内部进行了优化,只更新真正的字段 改变了。这意味着如果您不更改任何内容并调用保存, Sequelize 会知道保存是多余的并且什么也不做,即, 不会生成任何查询(它仍然会返回一个 Promise,但它 将立即解决)。
很好,但是好像对json不起作用,我可以强制更新吗?
从今天开始,我必须做一个数组的深拷贝来保存它。
如果这很重要,我正在使用 MariaDB IDK。
【问题讨论】:
-
如果你只是做一个浅拷贝,让数组引用本身发生变化,即在推送之前
instance.arr = [...instance.arr],它是否有效?
标签: node.js sequelize.js