MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Connessione al database di Meteor

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.