Loopback MongoError: not authorized for query on heroku_xxxx.role
Loopback MongoError: not authorized for query on heroku_xxxx.role
我通过以下设置为我的服务器使用环回:
"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% 的情况下,它都能完美运行。但是当我开始在平台上拥有更多 activity 时,我在服务器开始崩溃之前就开始收到此错误。这是错误:
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>
使用和不使用 ?&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 上发现了这个 post,这似乎是同样的错误,我按照其他人所说的通过更改 mongodb@2.1 解决了他们的问题。 18 岁了,还是没有运气...
解决方案是将环回更新到最新版本。 Loopback 库包含 MongoDB 节点驱动程序作为依赖项,并使用该驱动程序连接到 MongoDB 数据库。
以前版本的 MongoDB 节点驱动程序存在已知 connection/authentication 问题。通过更新到最新的环回版本,安装了更新版本的节点驱动程序。
我通过以下设置为我的服务器使用环回:
"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% 的情况下,它都能完美运行。但是当我开始在平台上拥有更多 activity 时,我在服务器开始崩溃之前就开始收到此错误。这是错误:
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>
使用和不使用 ?&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 上发现了这个 post,这似乎是同样的错误,我按照其他人所说的通过更改 mongodb@2.1 解决了他们的问题。 18 岁了,还是没有运气...
解决方案是将环回更新到最新版本。 Loopback 库包含 MongoDB 节点驱动程序作为依赖项,并使用该驱动程序连接到 MongoDB 数据库。
以前版本的 MongoDB 节点驱动程序存在已知 connection/authentication 问题。通过更新到最新的环回版本,安装了更新版本的节点驱动程序。