gpt4 book ai didi

mongodb - meteor 数据库连接

转载 作者:IT老高 更新时间:2023-10-28 13:24:13 27 4
gpt4 key购买 nike

我正在尝试连接到作为 Meteor 应用程序位于机器上的 Mongo 数据库。这是我的应用程序中的两个文件:

a.js:

if (Meteor.isServer) {

var database = new MongoInternals.RemoteCollectionDriver("mongodb://127.0.0.1:3001/meteor");
Boxes = new Mongo.Collection("boxes", { _driver: database });
Meteor.publish('boxes', function() {
return Boxes.find();
});
}

b.js:

if (Meteor.isClient) {
Meteor.subscribe('boxes');
Template.homeCanvasTpl.helpers({
boxes: function () {
return Boxes.find({});
}
});
}

但我不断收到“模板助手中的异常:ReferenceError:未定义框”错误 - 有什么想法吗?

最佳答案

如何使用 Meteor 连接到 MongoDB?

场景 A:默认使用内置数据库

这比你做的要简单得多。当您运行 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();

奖励:为什么不应该将 MongoInternalsMongo.Collection 一起使用?

作为 the docs indicate您不应将任何 Mongo 连接传递给 new Mongo.Collection() 命令,而应仅传递与另一个 Meteor 实例的连接。这意味着,如果您使用 DDP.connect 连接到不同的服务器,您可以使用您的代码 - 但您不应将 MongoInternalsMongo.Collection 混合使用 - 它们不能很好地协同工作。

关于mongodb - meteor 数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28787886/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com