Giả sử có một máy chủ MongoDB đang chạy cho một máy khách GUI (bằng wxPython ) trong một thời gian.
Làm cách nào để kết nối dự án Meteor mới với MongoDB đã có của tôi ?
Giả sử có một máy chủ MongoDB đang chạy cho một máy khách GUI (bằng wxPython ) trong một thời gian.
Làm cách nào để kết nối dự án Meteor mới với MongoDB đã có của tôi ?
Câu trả lời:
Sử dụng biến môi trường MONGO_URL. Cái gì đó như:
export MONGO_URL=mongodb://localhost:27017/your_db
Thay thế your_db
bằng meteor
hoặc bất kỳ db nào bạn muốn sử dụng.
export MONGO_URL=mongodb://localhost:27017/my_database_name
sẽ đưa dữ liệu vào một cơ sở dữ liệu có tên my_database_name
. Ý của ông ấy là nếu bạn muốn, bạn có thể làm export MONGO_URL=mongodb://localhost:27017/meteor
. Tought Tôi khuyên bạn nên đặt tên cơ sở dữ liệu của bạn giống với dự án của bạn.
Chúng tôi sử dụng npm
:
Tạo package.json
tệp với npm init
, nếu bạn chưa có.
Nhập và sửa đổi dòng sau trong tệp đó (thay thế tất cả các dòng <...>
):
"scripts": {"meteor": "MONGO_URL=mongodb://<USER>:<PASSWORD>@<SERVER>:<PORT>/<DB> meteor"}
npm run meteor
Trong phần nhận xét cho câu trả lời của danny, Tom Wijsman khuyên bạn nên vá các gói / mongo-liveata / mongo_driver.js, dòng 21. Một nơi tốt hơn là app / meteor / run.js, dòng 460. Bằng cách này, biến môi trường vẫn được chọn nếu có , chẳng hạn như khi chạy Meteor trên Heroku. Chỉ cần thay đổi mongodb được mã hóa cứng mặc định: //127.0.0.1 thành vị trí của máy chủ MongoDB của bạn.
Bạn có thể sử dụng db.copyDatabase để thực hiện việc này, với thông báo trước rằng có lỗi và bạn không thể cập nhật dữ liệu trong Meteor. Xem https://github.com/meteor/meteor/issues/61
Nếu đang sử dụng phiên bản phát triển của Meteor, bạn có thể chuyển dữ liệu từ máy chủ MongoDB đang chạy bằng cách khởi động ứng dụng Meteor, sau đó thực hiện:
mongo --port 3002
Thao tác này sẽ kết nối bạn với máy chủ Mongo của ứng dụng Meteor. Bây giờ sử dụng db.copyDatabase như thế này:
db.copyDatabase('myappDatabase', 'meteor', 'localhost');
Thao tác này sẽ sao chép cơ sở dữ liệu myappDatabase từ máy chủ MongoDB chạy trên cổng tiêu chuẩn trên localhost, sang máy chủ Mongo của ứng dụng Meteor. Tên cơ sở dữ liệu mà ứng dụng Meteor sử dụng là 'sao băng'.
Chỉ cần sao chép dữ liệu vào cơ sở dữ liệu Meteor MongoDB - không có lý do gì để cố gắng kết nối Meteor với cơ sở dữ liệu hiện có và có nguy cơ ghi đè lên mọi thứ.
Sử dụng mongoexport
để kết xuất các bộ sưu tập của bạn riêng lẻ, sau đó mongoimport
nhập các tệp vào cơ sở dữ liệu có tên meteor
trong phiên bản Meteor MongoDB. Phiên bản Meteor MongoDB chạy trên cổng 3002 với bind_address 127.0.0.1 và các tệp dữ liệu nằm trong thư mục con của dự án Meteor .meteor/local/db
.
Xem tài liệu nếu bạn không quen với nhập / xuất trong MongoDB.
app/lib/mongo_runner.js
quyết định cách khởi chạy nó (bạn thậm chí có thể không yêu cầu mã khởi chạy, do đó hãy xem cách tắt nó). Kết nối với nó dường như xảy ra bên trong packages/mongo-livedata/mongo_driver.js
, tôi nghĩ bạn có thể chỉ cần thay đổi tham số url trên dòng 21. Nếu bạn muốn biết giá trị của nó, hãy chèn console.log(url);
vào dòng trước đó, khởi động lại Meteor và xem kỹ đầu ra Meteor của bạn. Hãy chắc chắn rằng bạn thực sự gọi Meteor lần trong ứng dụng của bạn cho nó để kích hoạt ...
console.log(url);
và nhận được thông tin! Tôi sẽ đề nghị bạn hoàn thành câu trả lời này hoàn chỉnh vì tôi tin rằng nó sẽ giúp ích cho cộng đồng, hoặc ít nhất, những người như tôi chưa quen với sao băng ~
Tất cả những gì tôi đã làm là thêm IP của máy chủ giọt nước biển Kỹ thuật số của mình, thay vì localhost và nó đã hoạt động:
env: {
ROOT_URL: 'http://yourdomain.com',
MONGO_URL: 'mongodb://104.236.24.66:27017/meteor',
PORT: 3002,
},
CHỈNH SỬA: sử dụng MUP để triển khai các dự án sao băng của bạn: https://github.com/zodern/meteor-up
env: {
ROOT_URL: 'https://www.example.com',
MONGO_URL: 'mongodb://localhost/meteor',
},
Mup sử dụng Docker và sẽ "liên kết" 2 vùng chứa của bạn, do đó lưu trữ cả ứng dụng và mongo trên cùng một máy ảo (máy chủ). MongoDB của bạn sẽ không thể truy cập được từ IP công cộng vì lý do bảo mật.
Bạn phải giữ cho ứng dụng của mình chạy trong một cửa sổ đầu cuối, sau đó mở một cửa sổ khác và nhập "meteor mongo" và nó sẽ hoạt động!