Bir Meteor projesinde mevcut bir MongoDB'yi nasıl kullanırım?


85

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 ?


Dror ( stackoverflow.com/users/460278/dror ) aşağıdaki doğru yanıtı
Mike Graf

Yorum için teşekkürler. @ Dror'un çözümünün bir hack yerine çok resmi olduğunu biliyorum, ancak daha önce bir cevap vermiştim. O halde "yanıtı" değiştirmek / güncellemenin iyi ve izin verilen bir davranış olup olmadığından emin değilim?
Drake Guan

"İstediğiniz zaman hangi cevabın kabul edildiğini değiştirebilir veya cevabı kabul etmeyebilirsiniz." meta.stackexchange.com/a/5235/191226
Mike Graf

1
Bana bunu gösterdiğin için çok teşekkürler. Artık kendime daha çok güveniyorum.
Drake Guan

Yanıtlar:


157

MONGO_URL ortam değişkenini kullanın. Gibi bir şey:

export MONGO_URL=mongodb://localhost:27017/your_db

Kullanmak istediğiniz db your_dbile değiştirin meteor.


4
Sıkıştım. Your_db'yi "meteor" ile nasıl değiştireceğinizi açıklayabilir misiniz?
Surjith SM


2
@SurjithSM 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.
Benjamin Crouzier

1
Bir yapılandırma dosyasıyla yapılabilir mi? Settings.json ile
denendi

1
bu, yerel uygulamamın çökmesine neden oldu.
Deborah

14

Kullanıyoruz npm:

  • Zaten sahip değilseniz, package.jsonile 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"}
  • Daha sonra meteoru sadecenpm run meteor

'MONGO_URL' dahili veya harici bir komut olarak tanınmıyor
Abdul Hameed

1
bu bir ortam değişkeni, = işaretinin etrafında boşluk olmadığından emin olun
malix

9

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.


4

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.


2

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 mongoexportsonra, tek tek koleksiyonları dökümü mongoimportadlı veritabanına dosyaları almak için meteorMeteor 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 .


Bu, başka yollarla barındırmak yerine mongodb barındırmayı meteor'a teslim etmemiz gerektiği anlamına mı geliyor?
Drake Guan

2
@Drake: Meteor'u veritabanınızla çalışacak şekilde ayarlayamazsanız. app/lib/mongo_runner.jsnası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
Meteor'u

@Drake: Yorumumu bir cevap olarak yerleştirmemi istiyorsanız (sizin için işe yaradıysa), lütfen bana bildirin.
Tamara Wijsman

@TomWijsman: Denedim 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 ~
Drake Guan,

Verileri kopyalayıp yapıştırmak için ihracat / içe aktarma komutları yerine mongochef'i kullanmak çok daha kolay. 3t.io/mongochef
Max Hodges

0

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.


bunu nereye ekledin
Gaurav Arya

mongoDB için sanal makinenizin genel IP'sini kullanmak aslında kötü bir uygulamadır, cevabımı localhost'u kullanmak için güncelleyeceğim.
Milean

0

Çok zaman harcadım ve URL'nin etrafında alıntılar gerektirdiğini öğrendi:

export MONGO_URL='mongodb://localhost/meteor'
export MONGO_OPLOG_URL='op log url'

-6

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!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.