2016-07-19 4 views
1

Standardmäßig hat die Meteor-App Zugriff auf Sammlungen in einer Datenbank namens Meteor, aber ich möchte eine Verbindung zu einer Sammlung in einer anderen Datenbank herstellen.Wie verbinde ich mich mit einer externen MongoDB-Sammlung in einer Meteor-App?

umsah, fand ich einige Auszüge, die versuchen, Folgendes zu tun:

var mongoUrl = 'mongodb://127.0.0.1:27018/meteor'; 
var oplogUrl = 'mongodb://127.0.0.1:27018/local'; 

var remoteDriver = new MongoInternals.RemoteCollectionDriver(mongoUrl, { 
    oplogUrl: oplogUrl, 
}); 

var remoteCollection = new Mongo.Collection('extract', { 
    _driver: remoteDriver, 
}); 

Aber tut so meine App abstürzt geben den folgenden Fehler:

> Exited with code: 8 
? (STDERR) 
? (STDERR) /Users/test/.meteor/packages/meteor-tool/.1.3.3.ems6rm++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:280 
? (STDERR)       throw(ex); 
? (STDERR)        ^
? (STDERR) Error: $MONGO_OPLOG_URL must be set to the 'local' database of a Mongo replica set 
? (STDERR)  at Error (<anonymous>) 
? (STDERR)  at OplogHandle._startTailing (packages/mongo/oplog_tailing.js:216:13) 
? (STDERR)  at new OplogHandle (packages/mongo/oplog_tailing.js:76:8) 
? (STDERR)  at new MongoConnection (packages/mongo/mongo_driver.js:216:25) 
? (STDERR)  at new MongoInternals.RemoteCollectionDriver (packages/mongo/remote_collection_driver.js:4:16) 
? (STDERR)  at meteorInstall.collections.job_extract.js (collections/job_extract.js:10:20) 
? (STDERR)  at fileEvaluate (packages/modules-runtime/.npm/package/node_modules/install/install.js:153:1) 
? (STDERR)  at require (packages/modules-runtime/.npm/package/node_modules/install/install.js:82:1) 
? (STDERR)  at /Users/test/app_meteor/.meteor/local/build/programs/server/app/app.js:1453:1 
? (STDERR)  at /Users/test/app_meteor/.meteor/local/build/programs/server/boot.js:291:10 
? (STDERR)  at Array.forEach (native) 
? (STDERR)  at Function._.each._.forEach (/Users/arj/.meteor/packages/meteor-tool/.1.3.3.ems6rm++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/underscore/underscore.js:79:11) 
? (STDERR)  at /Users/test/app_meteor/.meteor/local/build/programs/server/boot.js:133:5 
+0

Dies bedeutet, dass Ihr 'oplogUrl' nicht auf eine gültige MongoDB-oplog-Quelle zeigt. Hast du eins aufgebaut? – MasterAM

+0

Was ist ein MongoDB-Oplog? Muss ich es selbst einrichten? Da auf dem 27018 bereits ein MongoDB-Server läuft, sollte nicht bereits ein Oplog laufen? –

+0

Sie müssen nicht oplog verwenden (das Format, das von MongoDB zur Darstellung von Operationen verwendet und in Replikatssätzen verwendet wird), aber die Alternative dazu ist die Verwendung von poll-and-diff. Sie können mehr darüber [hier] (http://www.manuel-schoebel.com/blog/meteorjs-and-mongodb-replica-set-for-oplog-tailing) lesen. Sie können Ihre Datenbank als Replikatgruppe mit einem einzelnen Knoten ausführen. Die Konfiguration hängt jedoch von Ihrer MongoDB-Version ab. – MasterAM

Antwort

0

Sie tun können, es durch Laufen Befehl in einer Meteor App exportieren MONGO_URL = URL. Dann wird Ihre App mit der URL-Datenbank verbunden.

+0

Versuchen Sie, eine bessere Erklärung mit Codebeispielen zu geben. –

+0

Ich möchte nicht die komplette Datenbank in eine entfernte Datenbank ändern, ich möchte, dass meine Meteor-App auf ihrer eigenen Datenbank läuft und beim Hinzufügen möchte ich auf eine Sammlung aus der entfernten Datenbank zugreifen. –