2016-11-02 3 views
7

Я использую 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], но до сих пор нет удача ...

+0

Вы сказали, что эта ошибка возникает, когда у вас есть «больше активности» на платформе. У всех mlab mongodbs есть флаг «auth», поэтому вы должны предоставить свою полную информацию (и вы уже сделали это, как я вижу). Может быть, у вас больше dbs с разными учетными данными, но доступными из того же URI? или, возможно, разные БД для среды разработки/создания/производства? попробуйте снова настроить свою информацию об аутентификации, вот документы: http://docs.mlab.com/connecting/#authentication –

+0

@AlbertoFecchi Ну, официально, у меня, похоже, есть набор реплик: mongodb: // : @, /? ReplicaSet = . Это помогает? – denislexic

+0

@AlbertoFecchi Это не похоже на активность, но происходит после некоторого простоя на сервере. Поэтому, когда я перезагружаюсь, все работает нормально, а затем через ~ 5 минут бездействия, следующий запрос терпит неудачу. И он всегда меняет коллекцию (от студентов, до документов, ролей, затем документов, ...). – denislexic

ответ

4

Решение должно было обновить Loopback до последней версии. Библиотека Loopback включает в себя драйвер узла MongoDB в качестве зависимости и использует драйвер для подключения к базе данных MongoDB.

Предыдущие версии драйвера узла MongoDB имеют проблемы с подключением/аутентификацией. Обновив последнюю версию Loopback, была установлена ​​более новая версия драйвера Node.

+0

Обновлено основное сообщение. Я просто попробовал пару версий, но никто не работал. – denislexic

 Смежные вопросы

  • Нет связанных вопросов^_^