Я использую Loopback для моего сервера со следующей установкой:Loopback MongoError: не авторизованы для запроса на 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",
Это соединительном к MongoDB, что это находится на mlab.com
Мой главный запрос включает в себя модель и ее зависимости, например:
GET /api/course/1234
PARAMS filter = {
include: [
{relation:'students'},
{relation:'documents'},
{relation:'modules'}
]
}
99.9% в течение 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
... кажется случайным, и я понятия не имею, как это исправить.
Для подключения к БД я использую URI, предоставляемый mlab. Который выглядит следующим образом:
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, который, кажется, та же ошибка, я последовал за то, что другие говорили, решить свои проблемы путем изменения [email protected], но до сих пор нет удача ...
Вы сказали, что эта ошибка возникает, когда у вас есть «больше активности» на платформе. У всех mlab mongodbs есть флаг «auth», поэтому вы должны предоставить свою полную информацию (и вы уже сделали это, как я вижу). Может быть, у вас больше dbs с разными учетными данными, но доступными из того же URI? или, возможно, разные БД для среды разработки/создания/производства? попробуйте снова настроить свою информацию об аутентификации, вот документы: http://docs.mlab.com/connecting/#authentication –
@AlbertoFecchi Ну, официально, у меня, похоже, есть набор реплик: mongodb: //: @, /? ReplicaSet = . Это помогает? –
denislexic
@AlbertoFecchi Это не похоже на активность, но происходит после некоторого простоя на сервере. Поэтому, когда я перезагружаюсь, все работает нормально, а затем через ~ 5 минут бездействия, следующий запрос терпит неудачу. И он всегда меняет коллекцию (от студентов, до документов, ролей, затем документов, ...). – denislexic