【问题标题】:Sequelize: Force update for JSON arraySequelize:强制更新 JSON 数组
【发布时间】: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


【解决方案1】:

您似乎必须指定该字段已更改

instance.changed( 'arr', true);
instance.save

【讨论】:

    猜你喜欢
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    相关资源
    最近更新 更多