假设有一个 GUI 客户端(通过wxPython)正在运行一段时间的 MongoDB 服务器。
如何将我的新 Meteor 项目连接到我已经存在的 MongoDB?
使用环境变量 MONGO_URL。就像是:
export MONGO_URL=mongodb://localhost:27017/your_db
替换your_db
为meteor
或您要使用的任何数据库。
我们使用npm
:
如果您还没有文件,请创建一个package.json
文件。npm init
在该文件中输入并修改以下行(替换所有<...>
的):
"scripts": {"meteor": "MONGO_URL=mongodb://<USER>:<PASSWORD>@<SERVER>:<PORT>/<DB> meteor"}
npm run meteor
在对 danny 的回答的评论中,Tom Wijsman 建议修补 packages/mongo-livedata/mongo_driver.js,第 21 行。更好的地方是 app/meteor/run.js,第 460 行。这样,如果存在环境变量,仍然会被拾取,例如在 Heroku 上运行 Meteor 时。只需将默认硬编码的 mongodb://127.0.0.1 更改为 MongoDB 服务器的位置。
您可以使用 db.copyDatabase 来执行此操作,但需要注意的是存在错误并且您无法更新 Meteor 中的数据。见https://github.com/meteor/meteor/issues/61
如果您使用的是 Meteor 的开发版本,您可以通过启动 Meteor 应用程序从正在运行的 MongoDB 服务器传输数据,然后执行以下操作:
mongo --port 3002
这会将您连接到 Meteor 应用程序的 Mongo 服务器。现在像这样使用 db.copyDatabase :
db.copyDatabase('myappDatabase', 'meteor', 'localhost');
这会将数据库 myappDatabase 从在 localhost 的标准端口上运行的 MongoDB 服务器复制到 Meteor 应用程序 Mongo 服务器。Meteor 应用程序使用的数据库名称是“meteor”。
只需将数据复制到 Meteor MongoDB 数据库 - 没有理由尝试将 Meteor 连接到现有数据库并冒险覆盖内容。
用于mongoexport
单独转储您的集合,然后mongoimport
将文件导入到meteor
Meteor MongoDB 实例中命名的数据库中。Meteor MongoDB 实例在端口 3002 上运行,bind_address 为 127.0.0.1,数据文件位于 Meteor 项目子目录.meteor/local/db
中。
如果您不熟悉 MongoDB 中的导入/导出,请参阅文档。
我所做的只是添加了我的数字海洋水滴服务器的 IP,而不是本地主机,它起作用了:
env: {
ROOT_URL: 'http://yourdomain.com',
MONGO_URL: 'mongodb://104.236.24.66:27017/meteor',
PORT: 3002,
},
编辑:使用 MUP 部署您的流星项目:https ://github.com/zodern/meteor-up
env: {
ROOT_URL: 'https://www.example.com',
MONGO_URL: 'mongodb://localhost/meteor',
},
Mup 使用 Docker,并将“链接”您的 2 个容器,从而将应用程序和 mongo 托管在同一个 VM(服务器)上。出于安全原因,不应从公共 IP 访问您的 mongoDB。
花了很多时间,发现它需要在 URL 周围加上引号:
export MONGO_URL='mongodb://localhost/meteor'
export MONGO_OPLOG_URL='op log url'
您必须让您的应用程序在一个终端窗口中运行,然后打开另一个窗口并输入“meteor mongo”,它应该可以工作!