【问题标题】:"Not authorized on ___ to execute command" with mLab + MongoDB ^3.0使用 mLab + MongoDB ^3.0 “未授权 ___ 执行命令”
【发布时间】:2019-10-21 02:12:38
【问题描述】:

连接顺利,但insert() 向我抛出此错误。

var MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
var url = 'mongodb://____:____@ds125565.mlab.com:25565/heroku_w268n9pj';

MongoClient.connect(url, function(err, client) {
    assert.equal(null, err);
    db = client.db('temp');
    console.log("connected!");
    const collection = db.collection('temp');
    collection.insert([{
        something: please
    }
});

我看到了一些关于 mLab 帐户和凭据的其他答案,但我刚刚为此创建了一个新的管理员帐户。令人沮丧,因为它以前使用 v2.3。

【问题讨论】:

  • 与 mongo shell 或 pymongo 相同的错误
  • 嘿,不知道你是否已经解决了这个问题,但是那个连接字符串看起来像一个沙盒计划。您只能访问沙盒计划中的一个数据库。连接字符串中的数据库名称是heroku_w268n9pj。所以试试db = client.db('heroku_w268n9pj')。否则,您将尝试在您无权访问的 temp 数据库上运行命令。
  • 这适用于 2.3 而不是 3.0 的原因是在 2.3 中,db 对象是从连接字符串自动创建的。而现在您需要自己指定数据库名称。确保它与连接字符串中的相同。
  • @tfogo 很高兴将其发布为答案:-)
  • @tfogo,请您发布完整的回复,并举例说明您所说的内容吗?

标签: mongodb npm mlab


【解决方案1】:

当尝试连接到 mlab 数据库时,您必须正确指定客户端。它位于连接字符串的末尾,就在最后一个正斜杠之后。

mlab_url = "mongodb://db_user_name:db_password@ds139725.mlab.com:39725/heroku_sd1fp182?retryWrites=false"
client = MongoClient(url)


db = client["heroku_sd1fp182"]
collection = db["coinHack"]

你也可能得到错误:

此 MongoDB 部署不支持可重试写入。请将 retryWrites=false 添加到您的连接字符串中。

只需将“?retryWrites=false”添加到您的连接字符串,如上所示。

【讨论】:

    猜你喜欢
    • 2019-05-30
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多