Come puoi connetterti a un MongoDB con Meteor?
Scenario A:utilizza il DB integrato come predefinito
Questo è molto più semplice di quello che hai fatto tu. Quando esegui meteor
in realtà si avvia un DB con il server Meteor, dove Meteor è in ascolto sulla porta 3000 e il database sulla porta 3001. L'app Meteor è già connessa a questo database sulla porta 3001 e utilizza un db chiamato meteor
. Non è necessario ricorrere a MongoInternals.RemoteCollectionDriver
. Rimuovi quel codice e cambia le cose in:
Boxes = new Mongo.Collection("boxes"); // use default MongoDB connection
Scenario B:utilizza un DB diverso come predefinito
Usando il MONGO_URL
variabile di ambiente è possibile impostare la stringa di connessione su un MongoDB all'avvio del server Meteor. Invece del database della porta 3001 locale o di una connessione non autenticata è possibile specificare esattamente dove e come connettersi. Avvia il tuo server Meteor in questo modo:
$ MONGO_URL=mongodb://user:[email protected]:27017/meteor meteor
Puoi anche omettere l'user:[email protected]
parte del comando se non è necessaria l'autenticazione.
Scenario C:connessione a un secondo (3°, ecc.) DB dalla stessa app Meteor
Ora dobbiamo usare MongoInternals.RemoteCollectionDriver
. Se desideri utilizzare un altro database che non sia il DB predefinito definito all'avvio del server Meteor, dovresti utilizzare il tuo approccio.
var database = new MongoInternals.RemoteCollectionDriver('mongodb://user:[email protected]:27017/meteor');
var numberOfDocs = database.open('boxes').find().count();
Bonus:perché non dovresti usare MongoInternals
con Mongo.Collection
?
Come indicano i documenti
non dovresti passare alcuna connessione Mongo al new Mongo.Collection()
comando, ma solo una connessione a un'altra istanza di Meteor. Ciò significa che se utilizzi DDP.connect
per connetterti a un server diverso puoi usare il tuo codice, ma non dovresti mischiare i MongoInternals
con Mongo.Collection
- non funzionano bene insieme.