Node.js - 在 Heroku 上使用 MongoHQ 连接到 MongoDB

Posted

技术标签:

【中文标题】Node.js - 在 Heroku 上使用 MongoHQ 连接到 MongoDB【英文标题】:Node.js - Connecting to MongoDB using MongoHQ on Heroku 【发布时间】:2011-11-26 09:38:14 【问题描述】:

我有一个使用 Express 的 Node.js 应用程序,它将数据存储在 mongoDB(本地)中。

它现在已成功推送到雪松堆栈上的 heroku 并且服务器正在运行。我通过终端添加了 mongohq 插件。

现在...如何通过 mongohq 将该 mongoDB 连接到我的应用程序以开始使用它???我在网上的任何地方都没有看到这方面的教程。如果您能指出一个或让我开始在哪里添加配置,我将不胜感激!

非常感谢。

更新:

我尝试了以下方法(使用 MYPASSWORD 和 MYDBNUMBER 的实际值:

在 routes.js 中

var db = mongoose.connect('mongodb://heroku:<MYPASSWORD>@staff.mongohq.com:10049/<MYDBNUMBER>');

在我的 schema.js 中(也尝试使用 heroku

var mongoose = require('mongoose');
mongoose.connect('mongodb://heroku:<MYPASSWORD>@staff.mongohq.com:10049/<MYDBNUMBER>');

我的 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"


现在,只有根 '/' GET 成功。实际上,如果我尝试 /page/ANYTHING ,我可以成功获得一个渲染的 500 错误页面,我用它来处理尝试获取尚未创建的“页面”的尝试……这对我来说似乎有点奇怪。其他一切都给我一个内部服务器错误。

另外,如果我去 mongohq 并在那里打开我的数据库,我的模型页面的集合已创建,并且唯一性索引已创建,即使我无法访问要创建或查看的页面我应用中的模型...

很高兴提供任何其他信息......所以卡住了。

【问题讨论】:

【参考方案1】:

我们对 MongoHQ 使用 heroku,但在我们的例子中,我们自己创建了 MongoHQ 帐户,因此我们的解决方案有点不同。 现在,我们正在使用 Redis 插件,在这种情况下,我们使用 heroku 环境变量连接到 Redis。 当你创建一个新插件时,Heroku 会添加一堆 env 变量,你可以轻松地从你的 node.js 应用程序访问这些变量:

process.env.NAME_OF_VAR

在 Redis 的情况下,var 的名称是 REDISTOGO_URL 所以我们的代码看起来像

process.env.REDISTOGO_URL

对于 MongoHQ,环境变量似乎是 MONGOHQ_URL

您可能需要进行一些解析。 Heroku 在http://devcenter.heroku.com/articles/mongohq#using_the_mongo_ruby_driver 有一些关于 Ruby 的文档,应该可以帮助您开始使用它。

关于在快速应用中执行此操作的位置。我们正在 app.js 上进行所有设置,这是我们在应用程序中的入口点。

希望这会有所帮助。

【讨论】:

非常感谢您的意见。我会在接下来的几天内试一试并报告。 是的,只是没有解决这个问题!除了在我的主文件mongoose.connect(process.env.MONGOHQ_URL); 和架构mongoose.connect(process.env.MONGOHQ_URL); 中添加变量之外,我还需要什么?我做了添加,应用程序在本地运行。日志并没有说太多,当我尝试做任何事情时,我基本上只是得到500。对于大多数事情,我得到Internal Server Error,除了一些我有自定义错误消息的url会显示自定义500视图......所以它有点工作,我很确定它只是没有访问数据库。 好的,很确定这是一个路由问题,看起来我实际上可以访问数据库。这个答案有帮助。谢谢。

以上是关于Node.js - 在 Heroku 上使用 MongoHQ 连接到 MongoDB的主要内容,如果未能解决你的问题,请参考以下文章

node.js 项目在本地机器上工作,在 Heroku 上部署时出现问题

Node.js Heroku 应用程序上的 TCP 连接

如何在 heroku 上远程调试 node.js 应用程序?

如何在 Heroku 上使用 Node.js 通信 Web 和 Worker dynos?

Node.js + Mongoose 可以在本地工作,但不能在 Heroku 上工作

无法在 heroku 上推送 node.js 应用程序