레일스의 ActiveRecord와 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
나는 것을 치료하기 위해 내 자신의 코드를 작성하는 것을 피하기하고 싶습니다 Sequelize와 같은 다른 옵션이이 기능을 제공하기 때문에 특별히이 기능을 좋아합니다.
Bookshelf에서 데이터베이스 스키마를로드하는 데 권장되는 일반적인 방법, 플러그인 또는 라이브러리가 있습니까?
답변 해 주셔서 감사합니다. 그러나 이러한 옵션은 정확히 내가 피하고 싶습니다. 응용 프로그램이 복잡해지면 전체 마이그레이션을 실행하여 새로운 데이터베이스를 초기화하는 것이 좋지 않으며 SQL 덤프로 프로젝트 저장소를 업데이트하는 작업은 반복적 인 작업이므로 워크 플로에 추가하고 싶지 않습니다. . ActiveRecord와 Sequelize는 모두이 문제를 원활하게 해결하는 스키마 로딩 기능을 가지고 있으므로 Bookshelf와 비슷한 것을 찾을 것으로 기대했지만 거기에는없는 것처럼 보입니다. –
Rails db : schema : load는 마이그레이션이 실행될 때마다 덤프되는 schema.rb 파일을로드하여 작동합니다. db : schema : dump는 해당 덤프를 대체합니다. 따라서 레일스는 SQL 덤프로 리파지토리를 업데이트하고 있습니다. – chris
그러면 레일스가 npm 스크립트를 사용하여 스키마를 생성하기 위해 pg_dump를 사용하고, 스키마를로드하기 위해 pg_restore를 사용하고, knex를 사용하여 마이 그 레이션을 실행하는 마이 그 레이션 스크립트를 사용하여 레일스와 동일한 작업을 쉽게 수행 할 수 있습니다. 스키마 덤프가 발생할 때마다 동일한 파일을 덮어 쓰고 스키마로드 스크립트가 해당 파일을로드합니다. – chris