Sequelize更新不再起作用:“缺少传递给更新的options参数中的属性”

时间:2014-10-27 05:38:37

标签: javascript node.js sequelize.js

The official API documentation建议像这样使用Model.update

var gid = ...;
var uid = ...;

var values = { gid: gid };
var where = { uid: uid };
myModel.update(values, where)
.then(function() {
    // update callback
});

但是这给了我:“缺少传递给更新的options参数中的属性”。 文档还提到这种用法已被弃用。看到这个错误让我觉得,他们已经改变了它。我做错了什么?

2 个答案:

答案 0 :(得分:12)

显然,文档尚未更新。但是where行的where行表示您的选择前缀为var gid = ...; var uid = ...; var values = { gid: gid }; var selector = { where: { uid: uid } }; myModel.update(values, selector) .then(function() { // update callback }); ,如下所示:

options.where

它有效!

<强>更新

文档已经更新(文档也已被移动)。查看the Model.update API docs。请注意,{{1}}不是可选的(它不在括号[]中)。

答案 1 :(得分:0)

要一次更新所有行,请为where提供一个空对象。如下面的代码所示:

await DisplayMediaSequence.update({
    default: false
}, {
    where: {}, // <--- here
    transaction
});

await DisplayMediaSequence.update({
    default: true
}, {
    where: {
        id
    },
    transaction
});