Я попытался создать модель в sequelize (скажем, имеет 3 атрибута, attrA, B и C) с некоторой пользовательской логикой проверки. Этот учебник помог мне настроить большую часть его:
const Model = Sequelize.define('model', {
attrA: { type: Sequelize.STRING },
attrB: { type: Sequelize.STRING },
attrC: { type: Sequelize.STRING },
}, {
validate: {
someValidationLogic() {
// Do something with attrA,B,C
// if (this.attrA ... this.attrB ... this.attrC) throw new Error..
}
}
})
Однако в логике приложения, скажем, только 2 из 3 атрибутов (A и B) необходимо обновить:
Model.update(
{
attrA: 'foo',
attrB: 'bar'
}, {
where: {
id: 1,
},
returning: true,
})
Это приводит к тому, что при вызове пользовательской логики проверки в объекте this
, доступном в функции, только attrA
и attrB
определяются в this
и attrCосталось неопределенным.Это приводит к сбою логики проверки, так как attrC не может быть прочитан.Можно ли как-нибудь получить видимый объект из someValidationLogic()
, чтобы заполнить все атрибуты?Или эта «проверка» вообще не должна была быть логикой проверки и должна была проводиться на уровне приложения?