【问题标题】:'admin' $db always loads when I connect to MongoDB 3.6 using mongoose当我使用 mongoose 连接到 MongoDB 3.6 时,'admin' $db 总是加载
【发布时间】:2018-01-26 08:01:12
【问题描述】:

我正在使用 mongoose 将我的节点项目升级到 MongoDB 3.6。 (我只是npm安装了最新版本的mongodb和mongoose,mongodb:3.0.1,mongoose:5.0.1)。

无论我使用连接字符串传入的数据库名称是什么,每当我运行曾经适用于我的项目的查询时 例如

configModel.find({type: 'settings'}, function (err, data) {...})

我现在收到一个授权错误“MongoError: not authorized on admin to execute command... $db: 'admin'”

这是我目前正在使用的连接功能。我也尝试过使用 mongoose.createConnection 得到相同的结果。

var options = {
  autoReconnect: true,
  reconnectTries: Number.MAX_VALUE,
  poolSize: 10
};

mongoose.connect(connectionString, options, function(err, db){
  ...
});

connectionString 的格式为:

mongodb+srv://<USER>:<PASSWORD>@[atlas.mongo].mongodb.net/<DATABASE_NAME> 

这也给了我同样的结果

mongodb+srv://<USER>:<PASSWORD>@[atlas.mongo].mongodb.net/<DATABASE_NAME>?authSource=admin

我可以使用 Studio 3T 使用上述任一连接字符串连接和查询我的数据库,所以我认为 mongoose 出了点问题。

有什么想法吗?

【问题讨论】:

  • 您没有正确授权用户。您使用的是 localhost 还是云托管解决方案?
  • 云。这似乎是获取正确数据库的问题——使用 Studio 3T 上的“intelliShell”我可以手动指定我想要的数据库并毫无问题地执行任何查询。然而,在我的应用程序中,尽管在我的连接字符串中指定了不同的 ,但我始终连接到“管理员”数据库。

标签: node.js mongodb mongoose


【解决方案1】:

只需阅读 mongodb for node 将在 3.0.2 版本中对此进行修复。 link to Jira thread

【讨论】:

    猜你喜欢
    • 2015-01-28
    • 2017-03-27
    • 2011-10-03
    • 2020-02-22
    • 2020-07-25
    • 2021-06-19
    • 2017-09-09
    • 2021-11-18
    • 1970-01-01
    相关资源
    最近更新 更多