2014-12-13 64 views
0

我有一个小问题,我不知道从哪里开始:我有应用程序错误,我认为我的MongoLab数据库连接不正确。用PencilBlue连接到Heroku的Mongolab

这里是链接的Heroku w2w.

在应用程序中出现错误,你的页面无法 服务。请稍后重试。

如果您是应用程序所有者,请查看您的日志以了解详细信息。

这里是我的config.json文件:

{ 
"siteName": "PencilBlue Heroku and MongoDB Demo", 
"siteRoot": "http://w2w.herokuapp.com", 
"siteIP": "w2w.herokuapp.com", 
"log_level": "info", 
"db": { 
    "type":"mongo", 
    "servers": [ 
    "mongodb://hercules:[email protected]:63330/pencilbluedb" 
    ], 
    "name": "pencilbluedb", 
    "authentication": { 
     "un": "hercules", 
     "pw": "MYPASSWORD", 
    }, 
    "writeConern": 1 
}, 
"cache": { 
    "fake": true, 
    "host": "localhost", 
    "port": 6379 
}, 
"settings": { 
    "use_memory": true, 
    "use_cache": false 
}, 
"templates": { 
    "use_memory": true, 
    "use_cache": false 
}, 
"plugins": { 
    "caching": { 
     "use_memory": true, 
     "use_cache": false 
    } 
} 
} 

我不知道为什么它不加载。我遵循这里的指示:Pencilblue link,唯一的区别是我试图连接到MongoLab,他们建议MongoHQ(它已被更改为“撰写”)。

任何帮助,将不胜感激。

+0

请注意,如果您安装了heroku CLI,则可以使用“heroku logs --tail”https://devcenter.heroku来定位您的应用程序的日志。COM /用品/日志#实时尾。如果您有任何疑问,请随时联系我们[email protected] – 2014-12-13 21:11:50

+0

Chris,我运行了heroku logs - tail,并得到了大量与“应用程序崩溃”代码= H10的争吵。因为我是mongo和node的新手,你能告诉我它的意思吗? – 2014-12-14 02:51:24

+0

在推送应用程序更改/重新启动应用程序之前,您应该开始拖拽日志。这样,当你的应用程序崩溃时,你可以看到错误是什么。 – 2014-12-14 06:04:59

回答

1

看起来PencilBlue指令没有将db凭据作为mongodb连接字符串的一部分。尝试从连接字符串中删除它们,看看是否解决了这个问题。只要确保你在'认证'字段中指定了证书,它看起来像你已经在做。

+0

你能澄清一下评论什么。自从我刚刚开始学习这个以来,我有点失落。谢谢。 – 2014-12-14 02:47:06

+0

您正在使用“mongodb:// hercules:[email protected]:63330/pencilbluedb”。尝试使用“mongodb://ds063330.mongolab.com:63330/pencilbluedb”而不是 – 2014-12-14 06:06:17

+0

哦,好的。我第一次尝试这个选项时遇到了这个问题。它没有解决它:( – 2014-12-14 16:12:52

0

PencilBlue联合创始人在这里。

你错过了在MongoDB的URL的结尾斜杠:

"mongodb://hercules:[email protected]:63330/pencilbluedb/" 
+0

亲爱的C0的创始人! 我的所有的尊重和良好的祝愿,我很抱歉,但这并没有帮助!斜线 - 没有斜线,证书 - 没有凭据。它说,应用程序错误 – 2014-12-18 02:43:44

+0

那么,如果是这种情况,请将日志级别设置为“调试”或“愚蠢”,并在我们的github上打开一张票,以便我们深入了解它。 – 2014-12-18 18:56:35

0

我发现这工作:

例如说这是你的连接字符串URI

的MongoDB :// heroku_td9xx269:[email protected]:39725/heroku_td9xx269

"db": { 
    "type": "mongo", 
    "servers": [ 
     'mongodb://heroku_td9xx269:[email protected]:39725' 
    ], 
    "name": "heroku_td9mdp69", 
    "authentication": { 
     "un": "heroku_td9xx269", 
     "pw": "vl3o3hsj6e61ib7kiaul0vsjrd", 
    }, 
    "writeConcern": 1, 
    "query_logging": false 
}, 

诀窍是使用您的dbuser作为键“un”和“name”字段的值。

0

它看起来像你正在定义你的数据库名称两次,一次在URL中,一次在“名称”属性。从URL中删除数据库名称。例如

mongodb的://大力神:[email protected]:的63330/

代替

mongodb的://大力神:[email protected] :63330/pencilbluedb

而且pencilblue应该在连接时添加数据库名称。