2012-07-10 23 views
8

Tôi đang làm việc trên máy chủ node.js và sử dụng MongoDB với nút-mongo-native. Tôi đang tìm một khung di chuyển db, tương tự như việc di chuyển Rails. Bất kỳ đề xuất?framework di cư nút-mongo-native

+0

Vui lòng xem câu trả lời này: http://stackoverflow.com/a/34271611/5589395 –

Trả lời

8

Tôi không biết về công cụ Node.js gốc cụ thể để thực hiện di chuyển MongoDB .. nhưng bạn có tùy chọn sử dụng các công cụ được viết bằng các ngôn ngữ khác (ví dụ: Mongoid Rails Migrations).

Cần lưu ý rằng cách tiếp cận với Schema design và mô hình hóa dữ liệu trong MongoDB khác với cơ sở dữ liệu quan hệ. Đặc biệt, không có yêu cầu cho một bộ sưu tập để có một lược đồ phù hợp hoặc được khai báo trước, do đó rất nhiều hành động di chuyển truyền thống như việc thêm và loại bỏ các cột không bắt buộc.

Tuy nhiên .. di chuyển liên quan đến chuyển đổi dữ liệu vẫn có thể hữu ích.

Nếu ứng dụng của bạn đang mong đợi dữ liệu ở định dạng nhất định (ví dụ: bạn muốn chia trường "tên" thành "tên" và "họ"), có một số chiến lược bạn có thể sử dụng nếu ý tưởng sử dụng công cụ chuyển đổi văn bản trong một ngôn ngữ lập trình không được hấp dẫn:

  • khác biệt xử lý dữ liệu trong logic ứng dụng của bạn, vì vậy định dạng dữ liệu cũ và mới đều có thể chấp nhận (có lẽ "nâng cấp" hồ sơ để phù hợp với một định dạng mới hơn vì họ là cập nhật)
  • viết kịch bản để thực hiện di chuyển dữ liệu một lần
  • đóng góp người trợ giúp MongoDB cho node-migrate
+0

Cảm ơn thông tin. Những tùy chọn đó nghe có vẻ hợp lý. Âm thanh như giải pháp "nút" nhất là đi với nút di chuyển hoặc giải pháp homebrew. –

+0

nút di chuyển có vẻ tốt: Tôi có thể sử dụng mongoose bên trong lên và xuống của mình không? Ngoài ra, tôi cần thực hiện một số chuyển đổi dữ liệu trên cơ sở dữ liệu của mình trong dev, test và prod. Có cách nào để chạy tập lệnh di chuyển này trên một môi trường khác không? – chovy

6

Tôi vừa viết xong khung di chuyển cơ bản dựa trên nút-mongo-native: https://github.com/afloyd/mongo-migrate. Nó sẽ cho phép bạn di chuyển lên trên &, cũng như di chuyển lên/xuống đến một số sửa đổi cụ thể. Nó ban đầu được dựa trên nút di chuyển, nhưng rõ ràng là cần thiết để được thay đổi một chút để làm cho nó hoạt động.

Lịch sử sửa đổi được lưu trữ trong mongodb chứ không phải trên hệ thống tệp như di chuyển nút, cho phép cộng tác trên cùng một dự án bằng một cơ sở dữ liệu. Nếu không, mỗi nhà phát triển chạy di chuyển có thể khiến việc di chuyển chạy nhiều lần đối với cơ sở dữ liệu.

Bản thân di chuyển dựa trên tệp, đồng thời giúp cộng tác trên một dự án duy nhất mà mỗi nhà phát triển (hoặc không) không sử dụng cùng một cơ sở dữ liệu. Vì vậy, khi mỗi dev chạy di chuyển, tất cả các tệp di chuyển chưa chạy trên cơ sở dữ liệu của người đó sẽ được chạy.

Khám phá documentation để biết thêm thông tin.

Các vấn đề liên quan