我正在尝试将我的Node应用程序与所有模块一起从0.4升级到0.6。我想我的一切都是正确的,但MongoHQ回归:
db assertion failure
在每个查找/不同的调用上(连接没有错误)
这是我的package.json,我已将所有模块修复为一个特定版本,因为我最初在本地和Heroku之间存在一些差异。现在唯一的区别是我正在运行Node 0.6.19 local和Heroku运行0.6.18:
{ "name": "expensesspreadsheet"
, "version": "0.0.1"
, "engines":
{ "node" : "0.6.18"
, "npm" : "1.1.9"
}
, "main": "server.js"
, "dependencies":
{ "ejs": "0.7.1"
, "ejs-ext": "0.1.1"
, "express": "2.5.10"
, "railway": "0.2.17-pre3"
, "jugglingdb": "0.1.10"
, "yaml": "0.2.3"
, "coffee-script": "1.3.3"
, "mime": "1.2.5"
, "qs": "0.5.0"
, "mongoose": "2.7.0"
, "mongodb": "1.0.2"
, "connect-mongodb": "1.1.4"
, "connect-auth": "0.5.2"
, "moment" : "1.6.2"
, "connect-heroku-redis" : "0.1.5"
, "node-markdown" : "0.1.0"
, "recaptcha" : "1.1.0"
, "sendgrid": "0.2.1"
}
, "scripts":
{ "test": "nodeunit test/*/*"
}
}
我正在使用Mongoose来定义架构。连接到MongoHQ工作正常(回调中没有错误)。如果您想查看该代码,请告诉我,但它非常标准,几乎直接来自Mongoose网站。
然而,如上所述,每当我尝试实际找到任何数据时,我都会收到这个不明白的错误。
我已经手动连接到数据库并执行了查询:工作正常。 我已将我的本地环境连接到我的mongohq:工作正常。
所有这些仍然可以在Node 0.4上使用mongoose 2.3.13和mongodb驱动程序0.9.6-7
所以我的问题:
答案 0 :(得分:0)
在使用MongoHQ支持对此进行调查后,结果证明这是一个身份验证问题。
Heroku提供的MongoHQ网址与MongoHQ上的密码不同步。
在旧版本的应用程序中,我使用的是手动构建的URL,这解释了为什么这样做了。
我们怎么想出来的?通过查看MongoDB日志,这些日志包含明确的身份验证错误。遗憾的是,返回的JSON只包含通用的“db assertion failure”消息,没有其他细节。