Node.js ';管理员'$当我使用mongoose连接到MongoDB 3.6时,db总是加载

Node.js ';管理员'$当我使用mongoose连接到MongoDB 3.6时,db总是加载,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在使用mongoose将我的节点项目升级到MongoDB 3.6。(我刚刚安装了最新版本的mongodb和mongoose,mongodb:3.0.1和mongoose:5.0.1) 无论我在连接字符串中传递的数据库名称是什么,只要我运行用于我的项目的查询 e、 g 我现在得到一个授权错误“MongoError:Notauthorized on admin to execute command…$db:'admin'” 这是我目前正在使用的连接功能。我还尝试过使用mongoose.creat

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

无论我在连接字符串中传递的数据库名称是什么,只要我运行用于我的项目的查询 e、 g

我现在得到一个授权错误“MongoError:Notauthorized 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://:@[atlas.mongo].mongodb.net/
这也给了我同样的结果

mongodb+srv://<USER>:<PASSWORD>@[atlas.mongo].mongodb.net/<DATABASE_NAME>?authSource=admin
mongodb+srv://:@[atlas.mongo].mongodb.net/?authSource=admin
我可以使用上面的任意一个连接字符串使用Studio 3T连接和查询我的数据库,所以我认为mongoose出现了一些问题


有什么想法吗?

只要阅读mongodb for node将在3.0.2版中对此进行修复

您没有正确授权该用户。您使用的是本地主机还是云托管解决方案?云。这似乎是一个获取正确数据库的问题——在Studio 3T上使用“intelliShell”,我可以手动指定所需的数据库,并执行任何查询,而不会出现任何问题。然而,在我的应用程序中,尽管在我的连接字符串中指定了不同的名称,但我始终连接到“admin”数据库。
mongodb+srv://<USER>:<PASSWORD>@[atlas.mongo].mongodb.net/<DATABASE_NAME>?authSource=admin