我正在使用mongoose将我的节点项目升级到MongoDB 3.6。 (我只是NPM安装了最新版本的mongodb和mongoose,mongodb:3.0.1和mongoose:5.0.1)。
无论我使用我的连接字符串传递的数据库名称,每当我运行一个曾经用于我的项目的查询时 例如
configModel.find({type: 'settings'}, function (err, data) {...})
我现在收到授权错误" MongoError:管理员未授权执行命令... $ 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出了问题。
有什么想法吗?