Không có gì được tích hợp sẵn cho việc này. Những gì tôi đã làm cho bản thân mình bây giờ là tương tự như cách Rails hoạt động, nhưng là một phần của khởi động thay vì một nhiệm vụ riêng biệt. Đầu tiên tạo ra một Meteor.Collection
được gọi là di chuyển, và sau đó cho mỗi di cư rời rạc, tạo ra một chức năng dưới thư mục con server
chạy khi khởi động. Nó chỉ nên chạy di chuyển nếu nó chưa chạy trước đó và nó sẽ gắn cờ di chuyển trong bộ sưu tập di chuyển khi nó được thực hiện.
// database migrations
Migrations = new Meteor.Collection('migrations');
Meteor.startup(function() {
if (!Migrations.findOne({name: "addFullName"})) {
Users.find().forEach(function (user) {
Users.update(user._id, {$set: {fullname: users.firstname + ' ' + users.lastname}});
});
Migrations.insert({name: "addFullName"});
}
});
Bạn có thể mở rộng kỹ thuật này để hỗ trợ xuống di cư (tìm kiếm sự tồn tại của một sự chuyển đổi nhất định và đảo ngược nó), thực thi một thứ tự sắp xếp trên đường di cư, và chia từng di cư vào một tập tin riêng biệt nếu bạn muốn.
Thật thú vị khi nghĩ về một gói thông minh để tự động hóa việc này.
Cuối cùng tôi có thể có động lực để tạo một gói thông minh với logic này. Điều này vẫn tốt hơn một phương pháp Meteor tối nghĩa. – wizonesolutions
Nếu bạn có nhiều máy chủ chạy trên cùng cơ sở dữ liệu (nhiều máy chủ web hoặc dịch vụ vi mô), bạn có thể gặp sự cố khi 5 máy chủ chạy cùng một truy vấn. Gói này dường như sử dụng [cơ chế khóa] (https://github.com/percolatestudio/meteor-migrations/blob/master/migrations_server.js#L159) –