Как можете да се свържете с MongoDB с Meteor?
Сценарий A:Използвайте вградената база данни по подразбиране
Това е много по-просто от това, което направихте. Когато стартирате meteor всъщност стартирате DB със сървъра Meteor, където Meteor слуша на порт 3000, а базата данни на порт 3001. Приложението Meteor вече е свързано към тази база данни на порт 3001 и използва db с име meteor . Няма никаква нужда да се връщате към MongoInternals.RemoteCollectionDriver . Просто премахнете този код и променете нещата на:
Boxes = new Mongo.Collection("boxes"); // use default MongoDB connection
Сценарий Б:Използвайте различна база данни по подразбиране
Използване на MONGO_URL променлива на средата можете да зададете низа за свързване на MongoDB при стартиране на сървъра Meteor. Вместо базата данни на локалния порт 3001 или неавтентифицирана връзка, можете да посочите точно къде и как да се свържете. Стартирайте вашия Meteor сървър по следния начин:
$ MONGO_URL=mongodb://user:example@sqldat.com:27017/meteor meteor
Можете също така да пропуснете user:example@sqldat.com част от командата, ако не е необходимо удостоверяване.
Сценарий C:Свързване към втора (3-та и т.н.) база данни от същото приложение Meteor
Сега трябва да използваме MongoInternals.RemoteCollectionDriver . Ако искате да използвате друга база данни, която не е базата данни по подразбиране, дефинирана при стартиране на сървъра Meteor, трябва да използвате вашия подход.
var database = new MongoInternals.RemoteCollectionDriver('mongodb://user:example@sqldat.com:27017/meteor');
var numberOfDocs = database.open('boxes').find().count();
Бонус:Защо не трябва да използвате MongoInternals с Mongo.Collection ?
Както посочват документите
не трябва да предавате връзка на Mongo към new Mongo.Collection() команда, а само връзка с друг екземпляр на Meteor. Това означава, че ако използвате DDP.connect за да се свържете с различен сървър, можете да използвате вашия код - но не трябва да смесвате MongoInternals с Mongo.Collection - те не работят добре заедно.