【问题标题】:Loopback MongoError: not authorized for query on heroku_xxxx.roleLoopback MongoError:未授权查询 heroku_xxxx.role
【发布时间】:2017-03-15 05:14:10
【问题描述】:

我正在为我的服务器使用 Loopback,设置如下:

"loopback": "^2.36.0",
"loopback-boot": "^2.23.0",
"loopback-component-explorer": "^2.4.0",
"loopback-component-storage": "^1.9.1",
"loopback-connector-mongodb": "^1.17.0",
"loopback-datasource-juggler": "^2.53.0",

它正在连接到 mlab.com 上的 mongoDB

我的主要查询包括一个模型及其依赖项,例如:

GET /api/course/1234
PARAMS filter = {
     include: [
          {relation:'students'},
          {relation:'documents'},
          {relation:'modules'}
     ]
}

99.9% 的时间,它都能完美运行。但是当我开始在平台上进行更多活动时,我会在服务器开始崩溃之前开始收到此错误。这是错误:

MongoError: not authorized for query on db.student
at Function.MongoError.create (/app/node_modules/mongodb-core/lib/error.js:31:11)
at queryCallback (/app/node_modules/mongodb-core/lib/cursor.js:182:34)
at /app/node_modules/continuation-local-storage/context.js:76:17
at bound (domain.js:287:14)
at runBound (domain.js:300:12)
at Callbacks.emit (/app/node_modules/mongodb-core/lib/topologies/server.js:119:3)
at null.messageHandler (/app/node_modules/mongodb-core/lib/topologies/server.js:397:23)
at Socket.<anonymous> (/app/node_modules/mongodb-core/lib/connection/connection.js:302:22)

有时它在db.students,有时它在db.documents ... 似乎是随机的,我不知道如何解决它。

为了连接数据库,我使用mlab 提供的URI。看起来像这样:

mongodb://<dbuser>:<dbpassword>@<dbpath>/<dbname>

有和没有?&amp;authMode=scram-sha1&amp;rm.tcpNoDelay=true,但仍然出现错误。

任何想法发生了什么以及如何解决这个问题?

__ 编辑:我尝试了几个不同的版本,但没有运气。最新的是:

"loopback": "^2.22.0",
"loopback-boot": "^2.6.5",
"loopback-component-explorer": "^2.4.0",
"loopback-component-storage": "^1.9.1",
"loopback-connector-mongodb": "^1.17.0",
"loopback-datasource-juggler": "^2.39.0",

__ 编辑:我在 Github 上发现了这篇文章:https://github.com/strongloop/loopback-connector-mongodb/issues/251 这似乎是同样的错误,我按照其他人所说的通过更改 mongodb@2.1.18 解决了他们的问题,但仍然没有运气......

【问题讨论】:

  • 您说当您在平台上有“更多活动”时会出现此错误。所有 mlab mongodbs 都有 'auth' 标志,所以你必须提供你的身份验证信息(而且你已经做了我看到的)。也许您有更多具有不同身份验证凭据但可从同一 URI 访问的数据库?或者可能是用于开发/登台/生产环境的不同数据库?尝试再次设置您的身份验证信息,这是文档:docs.mlab.com/connecting/#authentication
  • @AlbertoFecchi 好吧,我似乎有一个副本集:mongodb://:@,/?replicaSet= .这有什么帮助吗?
  • @AlbertoFecchi 这似乎不是活动,而是在服务器上闲置一段时间后发生。因此,当我重新启动时,一切正常,然后在大约 5 分钟不活动后,下一个请求失败。而且它总是会改变集合(从学生到文档,再到角色,然后是文档……)。

标签: node.js mongodb loopbackjs mlab


【解决方案1】:

解决方案是将 Loopback 更新到最新版本。 Loopback 库包含 MongoDB Node 驱动程序作为依赖项,并使用该驱动程序连接到 MongoDB 数据库。

以前版本的 MongoDB 节点驱动程序存在已知的连接/身份验证问题。通过更新到最新的 Loopback 版本,安装了更新版本的 Node 驱动程序。

【讨论】:

  • 更新了主帖。我只是尝试了几个不同的版本,但都没有成功。
猜你喜欢
  • 2015-02-14
  • 1970-01-01
  • 2019-02-20
  • 2019-07-25
  • 1970-01-01
  • 2020-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多