首页 文章

Loopback MongoError:未授权对heroku_xxxx.role进行查询

提问于
浏览
7

我正在使用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",

它's connecting to a mongoDB that' s on mlab.com

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

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 ...似乎是随机的,我不知道如何解决它 .

要连接到DB,我使用mlab提供的URI . 看起来像这样:

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

有和没有 ?&authMode=scram-sha1&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来解决他们的问题,但仍然没有运气......

1 回答

  • 4

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

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

相关问题