Ứng dụng Meteor - đặt lại DB của ứng dụng đã triển khai


82

Có cách nào đơn giản để đặt lại dữ liệu từ ứng dụng đã triển khai sao băng không?

Vì vậy, ví dụ: nếu tôi đã triển khai một ứng dụng có tên test.meteor.com- làm cách nào tôi có thể dễ dàng đặt lại dữ liệu đã được ứng dụng đó thu thập?

Tại địa phương, tôi điều hành meteor reset, nhưng tôi không chắc phải làm gì trong quá trình sản xuất.

Câu trả lời:


108

Nếu bạn mang theo ứng dụng, bạn có thể thực hiện việc này trong thư mục dự án của mình

meteor deploy test.meteor.com --delete
meteor deploy test.meteor.com 

Lần đầu tiên xóa ứng dụng để tất cả đều trống. Cái thứ hai triển khai một phiên bản mới của nó trở lại.


Xin chào @akshat, bạn có nghĩ rằng stackoverflow.com/questions/10214385/how-does-meteor-work có nên được mở lại không?
Dan Dascalescu

điều này có vẻ giống như một chút hack. không có cách nào sạch hơn?
dcsan

Mã này có khiến URL tạm thời bị lấy ra không?
Merlin -they-them-

này không có gì để làm với thiết lập lại một dữ liệu ứng dụng trong sản xuất, và tôi không hiểu tại sao câu trả lời này có rất nhiều phiếu bầu tán thành
MickaelFM

43

một cách là tự đăng nhập vào phiên bản mongo và xóa dữ liệu có liên quan để giống như mỗi bộ sưu tập:

$ meteor mongo APP.meteor.com
> db.users.drop()
> db.xxx.drop()

bạn có thể bỏ toàn bộ DB, nhưng điều đó sẽ gây nhầm lẫn cho env của họ và --deletedù sao thì bạn cũng phải vào ứng dụng và triển khai lại.

> db.dropDatabase()

2
Đây phải là câu trả lời được chấp nhận, bạn tha cho tôi bản dựng lại + tải lại, cảm ơn!
saimeunt

làm điều này trong sản xuất với người dùng đã đăng nhập là một điều tồi tệ!
Adaptabi

2
@DotNetWise: Bạn không cần phải có APP.meteor.com sản xuất. Tốt nhất bạn nên có bản beta ở đó, và với việc nó là bản beta, mọi người có thể mong đợi những sự cố như thế này (nếu toàn bộ tài khoản của họ và mọi thứ họ từng làm bị xóa được tính là một sự cố. Hãy tưởng tượng nếu Facebook làm điều đó - Tôi tự hỏi có bao nhiêu người sẽ bận tâm ở lại và tạo lại mọi thứ.)
ArtOfWarfare.

Đề xuất tuyệt vời - chỉ cần bỏ một vài cơ sở dữ liệu là tất cả những gì tôi thực sự cần làm.
ArtOfWarfare

3

Tôi biết điều này hơi cũ, nhưng tôi vừa đổi tên bộ sưu tập của mình. vì vậy trong /lib/collections.jstệp của bạn ,

someCollection = new Mongo.Collection("originalcollection");

trở thành

someCollection = new Mongo.Collection("newcollectionname");

tất nhiên điều này giả định rằng ứng dụng của bạn tạo dữ liệu cho cơ sở dữ liệu.


1
Bạn chưa xóa bộ sưu tập cũ ở đây, bạn vừa tạo một bộ sưu tập trống mới. Nếu bạn đã làm điều này trong một ứng dụng chạy trên máy chủ (thay vì chỉ cục bộ), bạn sẽ vẫn có dữ liệu tồn tại trên máy chủ của mình bên trong một bộ sưu tập có tên originalcollection.
kahmali

1
Vâng @krose, tôi nhận ra điều đó, nhưng vấn đề là rất dễ dàng và nhanh chóng nếu bạn cần kiểm tra thứ gì đó. Như những người khác đã chỉ ra, bạn không sử dụng myapp.meteor.comcho sản xuất. Và nếu bạn đã làm như vậy, bạn DEFINITELY sẽ không muốn bỏ một cơ sở dữ liệu sản xuất. Tôi thực hiện chiến lược này để thử những điều mới một cách an toàn với mô hình của mình mà không ảnh hưởng đến dữ liệu. IMHO, phản hồi này không tệ đến mức đáng bị bỏ phiếu, vì đó là cách an toàn hơn nhiều để xử lý dữ liệu sản xuất. bạn có thể sau đó luôn luôn thả bộ sưu tập cụ thể, như bình luận @ dcsan giải thích:
Dave

1
có vẻ như một hack nhanh bạn có thể sử dụng nếu bạn biết những gì bạn đang làm :) upvoted để cân bằng downvote :)
dcsan

1

Chỉ cần bạn có thể truy cập DB sao băng của mình bằng

production-db-d2.meteor.io:27017/XYZ_meteor_com

trong đó XYZ = tên miền phụ của bạn

để xác thực sử dụng meteor auth (tên người dùng và mật khẩu)

Bạn có thể truy cập nó từ các công cụ rockmongo , robomogo , mongoui , v.v.

Để truy cập từ dòng lệnh

Xác thực đầu tiên bằng cách nhập tên người dùng, mật khẩu của sao băng

đăng nhập $ meteor

Sau đó

$ meteor mongo XYZ.meteor.com

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.