Bir GUI istemcisi için ( wxPython tarafından ) çalışan bir MongoDB sunucusu var diyelim .
Yeni Meteor projemi zaten mevcut MongoDB'me nasıl bağlayabilirim ?
Bir GUI istemcisi için ( wxPython tarafından ) çalışan bir MongoDB sunucusu var diyelim .
Yeni Meteor projemi zaten mevcut MongoDB'me nasıl bağlayabilirim ?
Yanıtlar:
MONGO_URL ortam değişkenini kullanın. Gibi bir şey:
export MONGO_URL=mongodb://localhost:27017/your_db
Kullanmak istediğiniz db your_db
ile değiştirin meteor
.
export MONGO_URL=mongodb://localhost:27017/my_database_name
, verileri adlı bir veritabanına koyacaktır my_database_name
. İstersen yapabilirsin demek istedi export MONGO_URL=mongodb://localhost:27017/meteor
. Veritabanınızın adını projenizle aynı şekilde adlandırmanızı öneririm.
Kullanıyoruz npm
:
Zaten sahip değilseniz, package.json
ile bir dosya oluşturun npm init
.
Bu dosyaya aşağıdaki satırı girin ve değiştirin (tüm satırları değiştirerek <...>
):
"scripts": {"meteor": "MONGO_URL=mongodb://<USER>:<PASSWORD>@<SERVER>:<PORT>/<DB> meteor"}
npm run meteor
In Danny'nin cevap Tom Wijsman yorumlarında önerir paketleri yama / Mongo-livedata / mongo_driver.js, çizgi 21. Daha iyi bir yer app / göktaşı / run.js içindedir, hat 460. Bu şekilde ortam değişkeni hala mevcutsa alınır Heroku'da Meteor çalıştırırken olduğu gibi. Varsayılan kodlanmış mongodb: //127.0.0.1'i MongoDB sunucunuzun konumuna değiştirin.
Bunu yapmak için db.copyDatabase'i, bir hata olduğunu ve verileri Meteor'da güncelleyemeyeceğinizi belirten bir uyarı ile kullanabilirsiniz. Bkz. Https://github.com/meteor/meteor/issues/61
Meteor'un geliştirme sürümünü kullanıyorsanız, Meteor uygulamanızı başlatıp ardından şunları yaparak çalışan bir MongoDB sunucusundan veri aktarabilirsiniz:
mongo --port 3002
Bu sizi Meteor uygulamasının Mongo sunucusuna bağlayacaktır. Şimdi db.copyDatabase'i şu şekilde kullanın:
db.copyDatabase('myappDatabase', 'meteor', 'localhost');
Bu, myappDatabase veritabanını localhost üzerindeki standart port üzerinde çalışan bir MongoDB sunucusundan Meteor uygulaması Mongo sunucusuna kopyalayacaktır. Meteor uygulamasının kullandığı veritabanı adı 'meteor'dur.
Verileri Meteor MongoDB veritabanına kopyalamanız yeterlidir - Meteor'u mevcut veritabanına bağlamayı denemek ve bir şeylerin üzerine yazma riskini almak için hiçbir neden yok.
Kullanım mongoexport
sonra, tek tek koleksiyonları dökümü mongoimport
adlı veritabanına dosyaları almak için meteor
Meteor MongoDB durumda. Meteor MongoDB örneği, bind_address 127.0.0.1 ile 3002 numaralı bağlantı noktasında çalışır ve veri dosyaları Meteor proje alt dizinindedir .meteor/local/db
.
MongoDB'de içe / dışa aktarmaya aşina değilseniz belgelere bakın .
app/lib/mongo_runner.js
nasıl başlatılacağına karar verir (kodun başlatılmasına bile ihtiyacınız olmayabilir, bu nedenle onu nasıl devre dışı bırakacağınıza bakın). Bağlantı içeride gerçekleşiyor gibi görünüyor packages/mongo-livedata/mongo_driver.js
, sanırım url parametresini 21. satırda değiştirebilirsiniz. Değerini öğrenmek istiyorsanız, ondan console.log(url);
önce satıra ekleyin , Meteor'u yeniden başlatın ve Meteor çıktınızı yakından izleyin. Uygulamanızda tetiklemesi için
console.log(url);
ve bilgiyi aldım! Bunu geçici bir cevap olarak eksiksiz hale getirmenizi önereceğim çünkü topluluğa yardım sağladığına inanıyorum veya en azından benim gibi meteora henüz aşina olmayan insanlar ~
Tek yaptığım, localhost yerine Dijital okyanus damlacık sunucumun IP'sini eklemekti ve işe yaradı:
env: {
ROOT_URL: 'http://yourdomain.com',
MONGO_URL: 'mongodb://104.236.24.66:27017/meteor',
PORT: 3002,
},
DÜZENLE: Meteor projelerinizi dağıtmak için MUP'u kullanın: https://github.com/zodern/meteor-up
env: {
ROOT_URL: 'https://www.example.com',
MONGO_URL: 'mongodb://localhost/meteor',
},
Mup, Docker kullanır ve 2 konteynerinizi "bağlar", böylece hem uygulamayı hem de mongoyu aynı VM (sunucu) üzerinde barındırır. MongoDB'nize güvenlik nedeniyle genel IP'den erişilememelidir.
Uygulamanızı bir terminal penceresinde çalışır durumda tutmalı, ardından diğerini açmalı ve "meteor mongo" yazmalısınız ve çalışmalıdır!