Добавить ограничение SQL CHECK с помощью Sequelize при определении модели без необходимости впоследствии изменять таблицу? - PullRequest
0 голосов
/ 14 апреля 2020

Итак, я могу добавить ограничение CHECK следующим образом:

ALTER TABLE с последующим RAW-запросом

let sql = `ALTER TABLE TestTable
ADD CONSTRAINT check_test CHECK testBool=false;`
await sequelize.query(sql, { type: sequelize.QueryTypes.RAW });

Я хочу сделать следующее: в состоянии сделать эту часть определения модели в моих моделях Sequelize. Я выполняю этот запрос, потому что я не знаю, как сделать проверку SQL этого типа в определении модели.

Я не уверен, что лучший способ сделать это для go. Когда модели синхронизируются c, я хочу, чтобы они синхронизировались c с уже установленной ПРОВЕРКОЙ, никакой дальнейшей миграции.

Это то, что мне нужно для запуска в ловушках моделей где-нибудь? вроде afterSyn c?

1 Ответ

0 голосов
/ 20 апреля 2020

Вы можете использовать beforeCreate перехватчик для добавления проверок перед вставкой какой-либо записи.

{
 hooks: {
        beforeCreate: (user, options) => {
          user.UserId = user.UserId ? 0 : 1
          user.TableId = user.TableId ? 0: 1
          user.UserId = user.UserId ? 0 : 1
          user.TableId = user.TableId ? 0: 1
        },
}

Вы также можете пропустить что-то, чтобы вставить, если не в нужном формате.

  user.UserId = user.UserId > 10 : user.UserId : undefined

Он будет запускаться каждый раз, когда вы пытаетесь вставить строку в таблицу. На самом деле он запускает ваши определенные условия перед вставкой данных в таблицу.

Здесь вы просто изменяете данные, которые должны быть вставлены в зависимости от условий.

...