如何更新所有匹配查询+包含模型的模型?

时间:2019-03-10 15:42:31

标签: javascript sql relational-database sequelize.js

让我们有一些模型:

const AbstractClassModel = sequelize.define('AbstractClassModel', {
    id: { allowNull: false, primaryKey: true, autoIncrement: false, type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4 },
    status: { type: DataTypes.STRING, allowNull: false }
});

让我们有另一个模型:

const ConcreteClassModel = sequelize.define('ConcreteClassModel ', {
    id: { allowNull: false, primaryKey: true, autoIncrement: false, type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4 },
    someConcreteValue: { type: DataTypes.STRING, allowNull: true, defaultValue: null }
});
ConcreteClassModel.associate = function (models) {
    ConcreteClassModel.belongsTo(models.AbstractClassModel);
};

现在,我想更新一堆实例。例如:

  

更新其中ConcreteClassModelsomeConcreteValue的所有BEFORE

     

,使其someConcreteValue变成AFTER

     

并更新其所属的status的{​​{1}}成为AbstractClassModel

这是到目前为止我想要做的:

CHANGED

运行此命令后,const updateObj = { 'someConcreteValue': 'AFTER', 'AbstractClassModel.status': 'CHANGED' }; await models.ConcreteClassModel.update(updateObj, { include: [{ model: models.AbstractClassModel, as: 'AbstractClassModel', required: true, }], where: { someConcreteValue: 'BEFORE' }, fields: Object.keys(updateObj), }); 被更新,但是ConcreteClassModel不变。

由于可以有许多与该AbstractClassModel子句匹配的模型,所以理想情况下,我希望它们全部进行批量更新。我如何正确地构造带有续集?并且如果不可能的话,使用针对PostgreSQL和SQLite的可移植SQL查询?

0 个答案:

没有答案