如何使用 Meteor 连接到 MongoDB?
场景A:默认使用内置DB
这比你所做的简单得多。当你跑步时meteor
实际上,您使用 Meteor 服务器启动了一个数据库,其中 Meteor 侦听端口 3000 并在端口 3001 上侦听数据库。Meteor 应用程序已在端口 3001 连接到该数据库,并使用名为的数据库meteor
。没有必要再退回去MongoInternals.RemoteCollectionDriver
。只需删除该代码并将其更改为:
Boxes = new Mongo.Collection("boxes"); // use default MongoDB connection
场景 B:使用不同的数据库作为默认值
使用MONGO_URL
环境变量,您可以在启动 Meteor 服务器时将连接字符串设置为 MongoDB。您可以准确指定连接位置和连接方式,而不是本地端口 3001 数据库或未经身份验证的连接。像这样启动你的 Meteor 服务器:
$ MONGO_URL=mongodb://user:password@localhost:27017/meteor meteor
您也可以省略user:password@
如果不需要身份验证,则为命令的一部分。
场景 C:从同一个 Meteor 应用程序连接到第二个(第三个等)数据库
现在我们需要使用MongoInternals.RemoteCollectionDriver
。如果您希望使用另一个数据库,该数据库不是启动 Meteor 服务器时定义的默认数据库,您应该使用您的方法。
var database = new MongoInternals.RemoteCollectionDriver('mongodb://user:password@localhost:27017/meteor');
var numberOfDocs = database.open('boxes').find().count();
奖励:为什么你不应该使用MongoInternals
with Mongo.Collection
?
As 文档表明你不应该将任何 Mongo 连接传递给new Mongo.Collection()
命令,但只是到另一个 Meteor 实例的连接。这意味着,如果您使用DDP.connect
要连接到不同的服务器,您可以使用您的代码 - 但您不应该混合使用MongoInternals
with Mongo.Collection
- 他们不能很好地合作。