Como você pode se conectar a um MongoDB com Meteor?
Cenário A:use o banco de dados integrado como padrão
Isso é muito mais simples do que o que você fez. Quando você executa
meteor
você realmente inicia um banco de dados com o servidor Meteor, onde o Meteor escuta na porta 3000 e o banco de dados na porta 3001. O aplicativo Meteor já está conectado a este banco de dados na porta 3001 e usa um banco de dados chamado meteor
. Não há necessidade de retornar ao MongoInternals.RemoteCollectionDriver
. Basta remover esse código e alterar as coisas para: Boxes = new Mongo.Collection("boxes"); // use default MongoDB connection
Cenário B:use um banco de dados diferente como padrão
Usando o
MONGO_URL
variável de ambiente, você pode definir a string de conexão para um MongoDB ao iniciar o servidor Meteor. Em vez do banco de dados da porta 3001 local ou de uma conexão não autenticada, você pode especificar exatamente onde e como se conectar. Inicie seu servidor Meteor assim:$ MONGO_URL=mongodb://user:[email protected]:27017/meteor meteor
Você também pode deixar de fora o
user:[email protected]
parte do comando se nenhuma autenticação for necessária. Cenário C:Conecte-se a um segundo banco de dados (3º, etc.) do mesmo aplicativo Meteor
Agora precisamos usar
MongoInternals.RemoteCollectionDriver
. Se você deseja usar outro banco de dados que não seja o banco de dados padrão definido ao iniciar o servidor Meteor, você deve usar sua abordagem. var database = new MongoInternals.RemoteCollectionDriver('mongodb://user:[email protected]:27017/meteor');
var numberOfDocs = database.open('boxes').find().count();
Bônus:por que você não deve usar o
MongoInternals
com Mongo.Collection
? Como os documentos indicam você não deve passar nenhuma conexão do Mongo para o
new Mongo.Collection()
comando, mas apenas uma conexão com outra instância do Meteor. Isso significa que, se você usar DDP.connect
para se conectar a um servidor diferente, você pode usar seu código - mas não deve misturar o MongoInternals
com Mongo.Collection
- eles não funcionam bem juntos.