我想了解如何连接到Meteor中的外部MongoDB实例。
我添加了这个环境
Meteor.startup(function () {
process.env.MONGO_URL = 'mongodb://[UN]:PW]@[host]:[port]/meteorTest'
});
但数据仍来自本地数据库。
我想将所有集合从本地数据库移动到此外部数据库。我阅读了所有的教程,它都告诉我设置这个evn变量,但没有什么真正起作用。我如何测试它是否连接?
答案 0 :(得分:18)
根据我自己的经验;我需要在启动meteorjs服务器应用程序之前设置环境变量。为此,您需要在调用meteor时在命令行上传递环境变量,或者为系统上运行meteor应用程序的配置文件预设环境。
所以你可以用这种命令启动你的应用程序:
MONGO_URL='mongodb://user:password@remote.domain.com:12345/' meteor
您还应该确保mongodb可以访问并且您的用户凭据是正确的!我假设您正在尝试使用远程mongodb实例在本地计算机上运行meteor。
在Windows上
您必须在meteor应用程序文件夹中创建批处理文件以调用环境变量。这里有一个例子:https://stackoverflow.com/a/29833177/1997579
答案 1 :(得分:6)
我不喜欢使用大的重复命令,我正在寻找一个解决方案,我将设置一个嵌入了某些东西的变量,所以每次我启动我的流星应用程序; MONGO_URL将自动设置为环境。所以这就是我所做的:
在package.json文件中,我将start参数替换为如下:
"scripts": {
"start": "MONGO_URL=mongodb://username:password@host_url:portnumber/dbname meteor run"
},
现在每次我想运行我的应用程序;我运行npm start
而不是meteor
或meteor run
注意:这有一个缺点。如果将db凭据放入package.json文件并将此文件添加到版本控制中,则会公开您的db凭据。
答案 2 :(得分:0)
在命令提示符下运行:
"MONGO_URL=mongodb://<USER>:<PASSWORD>@<SERVER>:<PORT>/<DB> meteor"
或 将此URL保存在项目文件夹中的run.sh文件中并运行meteor
答案 3 :(得分:0)
在 Windows 上,我在系统的环境变量中设置了 MONGO_URL,它对我来说效果很好。
我创建了一个新的环境变量,它的值为 MONGO_URL=mongodb://username:password@host_url:portnumber/dbname
在路径变量中,我添加了 %MONGO_URL%
然后在流星应用根文件夹中,我运行了 $meteor