MongoError: пользователю не разрешено делать действия

Я использую MongoDB Atlas в качестве моей базы данных.

Я использую angular4 с loopback как api.

Мое приложение прекрасно подключается к моей базе данных. Однако, когда я пытаюсь получить данные, я получаю эту ошибку (я заменил свое имя dbname на dbname):

MongoError: user is not allowed to do action [find] on [dbname.$cmd]

Запрос работает нормально, если я использую локальный клиент mongodb или экземпляр mongodb на AWS. Однако при использовании атласа я получаю эту ошибку.

Ответ 1

У меня была такая же ошибка.

  • Если вы используете v.3.0 драйвера MongoDB NodeJS, обратитесь к сообщению MikaS для изменений MongoClient.connect, которые необходимо выполнить. fooobar.com/questions/420195/...

  • Чтобы подключить ваше приложение к Atlas MongoDB, используйте драйвер 3.4, например.

    mongodb://<USERNAME>:<PASSWORD>@cluster0-shard-00-00-
    rb899.mongodb.net:27017,cluster0-shard-00-01-
    rb899.mongodb.net:27017,cluster0-shard-00-02-
    rb899.mongodb.net:27017/<DBNAME>?ssl=true&replicaSet=Cluster0-shard-
    0&authSource=admin
    

Ответ 2

В кластере Atlas выберите вкладку Security, нажмите кнопку Edit, затем добавьте роль readWriteAnyDatabase для пользователя. Попробуйте еще раз или обновите соединение, чтобы увидеть результат.

Ответ 3

Если вы используете v3.0 mongodb для Node.js, вы должны использовать новый API следующим образом, а строку соединения MongoDB Atlas URI для драйвера 3.4 и ранее:

MongoClient.connect(uri, function(err, client) {
  console.log("Connected successfully to server");

  const db = client.db(dbName);
});

Ответ 4

Тьфу! Это заняло слишком много времени, чтобы исправить! Для тех из вас, у кого такая же проблема. Я должен был сделать оба:

1> У меня была эта ошибка, моя проблема заключалась в том, что я не изменил имя базы данных с "test" на собственную базу данных при копировании строки подключения. - Мейер, 8 декабря 17 года в 12:43

2>

"MongoDB://: @cluster0-осколок-00-00- rb899.mongodb.net:27017,cluster0-shard-00-01- rb899.mongodb.net:27017,cluster0-shard-00-02- rb899.mongodb.net:27017/?ssl=true&replicaSet=Cluster0-shard- 0 & ампы; = администратор авторизация источник "

Кроме того, в Atlas вы должны указать более старый драйвер 2.2.12 или новее. После этого все наконец заработало.

Спасибо всем!