Добавление и удаление ограничений при миграции knex

#postgresql #knex.js

#postgresql #knex.js

Вопрос:

Я пытаюсь добавить ограничение в up раздел миграции knex, а затем снова добавить это ограничение (отменить изменение) в down раздел. Я хочу сохранить таблицу и все ее столбцы, но удалить unique index ограничения и из одного из этих столбцов. Это то, что у меня есть до сих пор:

 exports.up = function(knex) {
    return knex.schema
        .table('menuItems', tbl => {
            tbl.dropUnique("itemName")
            tbl.dropIndex("itemName") 
   // ^these will leave the column but remove the constraints,
   // correct?
        });
};

exports.down = function(knex) {
  // What do I do here?
};
 

Предполагая, что в моем текущем up я действительно просто удаляю ограничение, а не столбец, мой вопрос таков: как мне добавить ограничения обратно в существующий столбец (в down ) без создания нового столбца?

(Я довольно неуверенно отношусь к миграции knex, и у меня возникают проблемы с поиском примеров в Интернете, поэтому, если у кого-нибудь есть ссылки на полные примеры некоторых базовых миграций, это также может быть полезно для меня.)

Ответ №1:

На самом деле вы правильно удаляете ограничения в up ! В вашей down функции вы можете добавлять ограничения к таблице со следующим синтаксисом:

 exports.up = function(knex) {
    return knex.schema
        .table('menuItems', tbl => {
            tbl.unique('itemName');
            tbl.index('itemName');
        })
};
 

Для получения дополнительной информации ознакомьтесь с документацией Schema Index и Schema Unique!