И ActiveRecord (из Rails), и Sequelize (еще один node.js ORM) предоставляют способ инициализации базы данных, создавая структуры таблиц из определений моделей. Rails делает это с помощью команды rails db:schema:load
, тогда как Sequelize имеет метод sync()
, который делает то же самое. Используя это, нам не нужно запускать весь стек переноса приложения для запуска новой базы данных, а также не сохранять SQL-дампы в репозитории проектов.Общая практика загрузки схемы базы данных на Bookshelf.js/Knex.js
Исходя из этого фона, я ожидал, что Bookshelf.js или Knex.js будут иметь какую-то аналогичную функциональность, но я не смог найти ее в документации обоих проектов.
я тогда решил взглянуть на исходный код Ghost blogging engine, который использует книжную полку, и я узнал, что они относятся к инициализации базы данных в их собственном коде:
- https://github.com/TryGhost/Ghost/blob/e40290a/core/server/data/schema/schema.js
- https://github.com/TryGhost/Ghost/blob/e40290a/core/server/data/migration/populate.js
- https://github.com/TryGhost/Ghost/blob/e40290a/core/server/data/schema/commands.js
Я хотел бы избежать того, чтобы написать свой собственный код для лечения вещи s нравится это специально, потому что другие опции, такие как Sequelize, предлагают это из коробки.
Есть ли распространенная практика, плагин или библиотека, рекомендованные для загрузки схемы базы данных на Книжной полке?
Спасибо за ответ! но эти варианты - именно то, чего я хочу избежать. Когда приложение становится большим и сложным, инициализация новой базы данных путем запуска всего пакета миграции обычно является плохой идеей, и сохранение репозитория проекта, обновленного с помощью SQL-дампов, также является повторяющейся задачей, которую я бы не хотел добавлять в рабочий процесс , ActiveRecord и Sequelize имеют функцию загрузки схемы, которая решает эту проблему плавно, поэтому я ожидал найти что-то подобное для Bookshelf, но похоже, что нет. –
Rails db: schema: load работает, загружая файл schema.rb, который сбрасывается каждый раз при выполнении миграций. db: schema: dump заменяет этот дамп. Таким образом, в определенном смысле рельсы также поддерживают обновление хранилища с помощью дампа sql. – chris
Таким образом, вы можете легко достичь того же, что и рельсы, используя скрипт npm, используя pg_dump для создания схемы, pg_restore для загрузки схемы и сценарий миграции, который будет запускать миграции с помощью knex, а затем сбрасывать схему. Каждый раз, когда схема сбрасывает, перезаписывает тот же файл, и сценарий загрузки схемы загружает этот файл. – chris