MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Connexion à la base de données Meteor

Comment se connecter à une MongoDB avec Meteor ?

Scénario A :Utiliser la base de données intégrée par défaut

C'est beaucoup plus simple que ce que vous avez fait. Lorsque vous exécutez meteor vous démarrez en fait une base de données avec le serveur Meteor, où Meteor écoute sur le port 3000 et la base de données sur le port 3001. L'application Meteor est déjà connectée à cette base de données sur le port 3001 et utilise une base de données nommée meteor . Il n'est pas nécessaire de se rabattre sur MongoInternals.RemoteCollectionDriver . Supprimez simplement ce code et changez les choses en :

 Boxes = new Mongo.Collection("boxes"); // use default MongoDB connection

Scénario B :Utiliser une autre base de données par défaut

Utilisation de MONGO_URL variable d'environnement, vous pouvez définir la chaîne de connexion sur une MongoDB lors du démarrage du serveur Meteor. Au lieu de la base de données du port local 3001 ou d'une connexion non authentifiée, vous pouvez spécifier exactement où et comment vous connecter. Démarrez votre serveur Meteor comme ceci :

$ MONGO_URL=mongodb://user:[email protected]:27017/meteor meteor

Vous pouvez également omettre le user:[email protected] partie de la commande si aucune authentification n'est nécessaire.

Scénario C :Connectez-vous à une deuxième (3e, etc.) base de données à partir de la même application Meteor

Maintenant, nous devons utiliser MongoInternals.RemoteCollectionDriver . Si vous souhaitez utiliser une autre base de données qui n'est pas la base de données par défaut définie au démarrage du serveur Meteor, vous devez utiliser votre approche.

var database = new MongoInternals.RemoteCollectionDriver('mongodb://user:[email protected]:27017/meteor');
var numberOfDocs = database.open('boxes').find().count();

Bonus :Pourquoi ne devriez-vous pas utiliser MongoInternals avec Mongo.Collection ?

Comme les docs l'indiquent vous ne devez transmettre aucune connexion Mongo au new Mongo.Collection() commande, mais seulement une connexion à une autre instance de Meteor. Cela signifie que si vous utilisez DDP.connect pour vous connecter à un autre serveur, vous pouvez utiliser votre code - mais vous ne devez pas mélanger les MongoInternals avec Mongo.Collection - ils ne fonctionnent pas bien ensemble.