Позволяет иметь некоторую модель:
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
s, где someConcreteValue
равно BEFORE
, чтобы его someConcreteValue
стало AFTER
, и обновитьstatus
из 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
не изменяется.
Поскольку может быть много пар моделей, которые соответствуют этому предложению where
, в идеале я бы хотел, чтобы все они обновлялись массово.Как мне правильно структурировать с помощью sequelize?и если это невозможно, с переносимым SQL-запросом, предназначенным как для PostgreSQL, так и для SQLite?