Node.js - 在 Heroku 上使用 MongoHQ 连接到 MongoDB
我有一个使用 Express 的 Node.js 应用程序,它将数据存储在 mongoDB(本地)中。
现在它已成功推送到 cedar 堆栈上的 heroku,并且服务器正在运行。我通过终端添加了 mongohq 插件。
现在...我如何通过 mongohq 将 mongoDB 连接到我的应用程序以开始使用它???我在网上没有看到这方面的教程。如果您能给我指出一个或让我开始在哪里添加配置,我将不胜感激!
非常感谢。
更新:
我已经尝试了以下操作(使用 MYPASSWORD 和 MYDBNUMBER 的真实值:
在我的 schema.js 中的paths.js 中
var db = mongoose.connect('mongodb://heroku:<MYPASSWORD>@staff.mongohq.com:10049/<MYDBNUMBER>');
(也尝试使用 heroku
var mongoose = require('mongoose');
mongoose.connect('mongodb://heroku:<MYPASSWORD>@staff.mongohq.com:10049/<MYDBNUMBER>');
my package.json
{
"name": "NAME"
, "version": "0.0.1"
, "dependencies": {
"express": "2.4.6"
, "connect": "1.7.1"
, "stylus": ">= 0.0.1"
, "mongodb": ">= 0.9.6-7"
, "mongoose": ">= 2.0.0"
, "ejs": ">=0.4.3"
}
}
现在,只有 root ' /' GET 是成功的。实际上,如果我尝试 /page/ANYTHING 我可以成功获取渲染的 500 错误页面,该页面是我为处理获取尚未创建的“页面”的尝试而创建的......这似乎有点奇怪我。其他一切都会给我一个内部服务器错误。
另外,如果我去 mongohq 并在那里打开我的数据库,我的模型页面的集合已经创建,并且已经创建了唯一性索引,即使我无法访问。在我的应用程序中创建或查看模型的页面...
很乐意提供任何其他信息...所以卡住了。
I have a Node.js app using Express that stores data in a mongoDB (locally).
It's now pushed to heroku successfully on a cedar stack and the server is running. I added the mongohq addon through the terminal.
Now... how do I connect that mongoDB through mongohq to my application to start using it??? I don't see a tutorial for this anywhere online. If you can point me to one or get me started on where to add the configuration, I would greatly appreciate!
Thanks much.
Update:
I've tried the following (with real values for MYPASSWORD and MYDBNUMBER:
in routes.js
var db = mongoose.connect('mongodb://heroku:<MYPASSWORD>@staff.mongohq.com:10049/<MYDBNUMBER>');
in my schema.js (also tried using the heroku
var mongoose = require('mongoose');
mongoose.connect('mongodb://heroku:<MYPASSWORD>@staff.mongohq.com:10049/<MYDBNUMBER>');
my package.json
{
"name": "NAME"
, "version": "0.0.1"
, "dependencies": {
"express": "2.4.6"
, "connect": "1.7.1"
, "stylus": ">= 0.0.1"
, "mongodb": ">= 0.9.6-7"
, "mongoose": ">= 2.0.0"
, "ejs": ">=0.4.3"
}
}
Right now, only the root '/' GET is successful. Actually, if I try /page/ANYTHING I can successfully get a rendered 500 Error page that I made to handle attempts to get 'pages' that haven't been created... That seems kind of weird to me. Everything else gives me an Internal Server Error.
ALSO, if i go to mongohq and open my database there, a collection for my model pages has been created and the indexes for uniqueness have been created, even tho I haven't been able to access the pages to create or view the model in my app...
happy to provide any other info... so stuck.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我们使用 heroku 来对抗 MongoHQ,但在我们的例子中,我们自己创建了 MongoHQ 帐户,所以我们的解决方案有点不同。
现在,我们正在使用 Redis 插件,在这种情况下,我们使用 heroku 环境变量连接到 Redis。
当你创建一个新插件时,Heroku 添加了一堆环境变量,你可以从你的 Node.js 应用程序轻松访问这些变量,执行以下操作:
在 Redis 的情况下,变量的名称是 REDISTOGO_URL 所以我们的代码看起来像
对于 MongoHQ env 变量似乎是 MONGOHQ_URL
您可能需要进行一些解析。 Heroku 这里有一些关于 Ruby 的文档 http://devcenter.heroku.com/articles/mongohq#using_the_mongo_ruby_driver< /a> 这应该可以帮助你让它继续下去。
关于在 Express 应用程序中的何处执行此操作。我们正在 app.js 上进行所有设置,这是我们在应用程序中的入口点。
希望这有帮助。
We are using heroku against MongoHQ but in our case we created the MongoHQ account on our own so our solution is a bit different.
Now, we are using the Redis plugin and in that case we connect to Redis using the heroku env variables.
When you create a new plugin, Heroku adds a bunch of env variables that you can access from your node.js app easily doing this:
In the case of Redis to go the name of the var is REDISTOGO_URL so our code looks like
For MongoHQ the env variable seems to be MONGOHQ_URL
You may need to do some parsing. Heroku have some documentation for Ruby here http://devcenter.heroku.com/articles/mongohq#using_the_mongo_ruby_driver that should help you to get it going.
With respect to where to do this in an express app. We are doing all the setup on app.js that is our entry point in the app.
Hope this helps.