Использование sails.js с существующей базой данных postgres

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

Я использую адаптер sails-postgresql, в котором используется ось ватерлинии.

У меня есть существующая база данных, к которой я хочу подключиться.

Если я создаю модель с помощью generate something

а затем в моей модели у меня есть

attributes:{
    title:{type:'String'}
}

Если я перейду на localhost/something, то команда удалит все столбцы в таблице something, кроме названия.

Есть ли способ остановить это от этого? Это приложение не должно удалять столбцы в этой базе данных.

Спасибо!

Ответ 1

Я автор Sails-Postgresql. Паруса имеет ORM под названием Waterline, который используется для управления данными. По умолчанию предполагается, что вы хотите, чтобы auto-migrate ваша база данных соответствовала вашим атрибутам модели. Поскольку Postgresql - это база данных SQL, адаптер Sails-Postgresql имеет параметр под названием syncable, который по умолчанию имеет значение true. Это было бы неверно в базе данных NoSQL, например redis.

Это легко отключить, если вы хотите самостоятельно управлять столбцами базы данных. Вы можете добавить migrate: safe к своей модели и не будете пытаться обновлять схему базы данных при запуске Sails.

module.exports = {
  adapter: 'postgresql',
  migrate: 'safe',
  attributes: {
    title: { type: 'string' }
  }
};

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