我多次浏览这个标题,试图找到一个最新的解决方案,将我的本地Meteor Mongo数据库部署到Heroku。所以我在这里发布这个答案给所有同样的人,虽然问题是关于设置MONGO_URL。
这里是一个更新的解决方案(流星1.3.2.4)推送本地Meteor Mongo数据库到Heroku(免费)mLabs。我的应用程序不使用陨石,它使用“马”buildpack。
1.使本地蒙戈数据库的转储
在端子(未蒙戈外壳)在您的应用程序文件夹,
mongodump --port=3001 -o ../dump
2.将数据库文件出了“ dump/your-db-name“up into”dump“
在我的本地meteor实例中,/ dump文件夹放在我应用程序上方的文件夹中,所以”dump“与我应用程序的文件夹位于同一目录中。 “dump”包含一个以我的数据库命名的文件夹(“dump/my-database-name /”)。这会导致下一个脚本失败并出现mongorestore错误“不知道如何处理'my-database-name'”。为防止出现错误,请将文件夹“my-database-name”中的所有文件上移到“dump”中,然后删除“my-database-name”文件夹。
默认情况下,您的数据库名称是“meteor”,所以如果您没有更改它,请查找“dump/meteor /”。
3.在mLabs中,如果您还没有这样做,请创建一个具有管理员权限的用户。对我来说,在安装时分配的默认用户不起作用。
4.将您倾销的数据库推送到您的Heroku应用的mLabs。这假设你已经在你的Heroku应用中添加了mLabs插件,并在你的Heroku应用配置中设置了“MONGO_URL”。如果这些没有完成,他们必须先完成。
在终端(不是mongo shell)中,从应用程序的目录切换到包含“dump”目录的目录。就我而言,这只是“cd ../”。
转到您的Heroku应用程序的mLabs插件并单击“工具”选项卡,以获取您的默认“导入”脚本。这个脚本不适合我,但它可能适用于你。如果没有,粘贴这个脚本,用你的变量代替括号内的变量(也可以替换括号)。
mongorestore -h [your mLabs value] -d [your mLabs default user name] -u [your mLabs created user name] -p [your mLabs created user's password]
脚本运行后,您应该能够刷新您的mLabs“集合”选项卡并查看推送的数据。
祝你好运:)我希望这可以帮助别人!
这是Heroku环境提供给应用程序的一个环境变量,如process.env.PORT和process.env.HOST。因此,只需在if语句中根据需要进行更改即可使用。另外检查一个相关的问题... http://stackoverflow.com/questions/9730567/node-js-mongoose-works-locally-but-not-on-heroku – almypal