Как обновить все модели, соответствующие запросу + включенные модели? - PullRequest
0 голосов
/ 10 марта 2019

Позволяет иметь некоторую модель:

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?

...