Sequelize:强制更新 JSON 数组

r32*_*r32 1 node.js sequelize.js

在某些情况下,Sequelize 不会更新 JSON 字段。

例如,我有:

[[1]] (an array inside array)
Run Code Online (Sandbox Code Playgroud)

我正在努力推动一些事情:

instance.arr[0].push(1); // [[1,1]]
instance.save();
// or:
instance.update({arr: instance.arr});
Run Code Online (Sandbox Code Playgroud)

现在,在实例内部,我更改了数组,但数据库内部没有任何更改。甚至没有发送查询。:(

来自续集网站:

https://sequelize.org/master/manual/model-instances.html save 方法在内部进行了优化,仅更新真正更改的字段。这意味着,如果您不更改任何内容并调用 save,Sequelize 将知道该保存是多余的并且不执行任何操作,即不会生成任何查询(它仍然会返回 Promise,但会立即解析)。

这很好,但它似乎不适用于 JSON。我可以强制更新吗?

截至今天,我必须对数组进行深层复制才能保存它。

我正在使用MariaDB。我不知道这是否重要。

Dap*_*que 6

看来你必须指定该字段已更改

instance.changed( 'arr', true);
instance.save
Run Code Online (Sandbox Code Playgroud)