1

我正在尝试将我的 Node 应用程序以及所有模块从 0.4 升级到 0.6。我想我的一切都是正确的,但是 MongoHQ 返回:

db assertion failure

在每个 find/distinct 调用(连接没有错误)

这是我的 package.json,我已将所有模块固定为一个特定版本,因为我最初在 local 和 Heroku 之间存在一些差异。现在唯一的区别是我在本地运行 Node 0.6.19 而 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:​​工作正常。

所有这些仍然可以在节点 0.4 上使用 mongoose 2.3.13 和 mongodb 驱动程序 0.9.6-7

所以我的问题:

  • 有谁知道如何调试这个“db assertion failure”错误?
  • 任何其他想法可能有什么问题?
4

1 回答 1

0

在使用 MongoHQ 支持对此进行调查后,结果证明这是一个身份验证问题。

Heroku 提供的 MongoHQ URL 与 MongoHQ 上的密码不同步。

在旧版本的应用程序中,我使用的是手动构建的 URL,这解释了为什么该 URL 有效。

我们是怎么想出来的?通过查看 MongoDB 日志,这些日志包含明显的身份验证错误。遗憾的是,返回的 JSON 仅包含通用的“数据库断言失败”消息,没有其他详细信息。

于 2012-07-05T10:00:14.723 回答