让我们有一些模型:
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);
};
现在,我想更新一堆实例。例如:
更新其中
ConcreteClassModel
为someConcreteValue
的所有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查询?