假设有一段时间,GUI客户端(通过wxPython)有一个正在运行的MongoDB服务器。
如何将新的Meteor项目连接到我现有的MongoDB?
假设有一段时间,GUI客户端(通过wxPython)有一个正在运行的MongoDB服务器。
如何将新的Meteor项目连接到我现有的MongoDB?
Answers:
使用环境变量MONGO_URL。就像是:
export MONGO_URL=mongodb://localhost:27017/your_db
替换your_db
为meteor
或您要使用的任何数据库。
export MONGO_URL=mongodb://localhost:27017/my_database_name
会将数据放入名为的数据库中my_database_name
。他的意思是,如果您愿意,您可以做export MONGO_URL=mongodb://localhost:27017/meteor
。我想建议您将数据库名称命名为与项目相同的名称。
我们使用npm
:
如果还没有package.json
文件,请使用创建文件npm init
。
在该文件中输入并修改以下行(替换所有<...>
的):
"scripts": {"meteor": "MONGO_URL=mongodb://<USER>:<PASSWORD>@<SERVER>:<PORT>/<DB> meteor"}
npm run meteor
在对丹尼答案的评论中,汤姆·维斯曼(Tom Wijsman)建议修补软件包/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从在本地主机上的标准端口上运行的MongoDB服务器复制到Meteor应用程序Mongo服务器。Meteor应用程序使用的数据库名称为“ meteor”。
只需将数据复制到Meteor MongoDB数据库即可-无需尝试将Meteor连接到现有数据库并承担覆盖内容的风险。
用于mongoexport
分别转储您的集合,然后mongoimport
将文件导入到meteor
Meteor MongoDB实例中命名的数据库中。Meteor MongoDB实例在具有bind_address 127.0.0.1的端口3002上运行,并且数据文件位于Meteor项目的子目录中.meteor/local/db
。
如果您不熟悉MongoDB中的导入/导出,请参阅文档。
app/lib/mongo_runner.js
决定如何启动它(您甚至可能不需要启动代码,因此请研究如何禁用它)。与它的连接似乎发生在内部packages/mongo-livedata/mongo_driver.js
,我想您可以只更改第21行的url参数。如果您想知道它的值,请console.log(url);
在此行之前插入它,重新启动Meteor并密切注意您的Meteor输出。确保确实确实在应用程序中调用过一次Meteor才能触发它...
console.log(url);
并获得了信息!我会建议你做这个尽可能完整的变通办法回答,因为我相信它向社会提供帮助,或者至少,我这样的人不熟悉,流星尚未〜
我所做的就是添加我的Digital ocean Drop Server的IP,而不是localhost,它的工作原理是:
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。