我的API代码使用最新的Mongoose 5.0.11和正确的Mongo 3.4连接字符串连接到免费的Atlas service。
mongodb://someadmin:<PASSWORD>@ascatlas-shard-00-00-6fake.mongodb.net:27017,ascatlas-shard-00-01-6fake.mongodb.net:27017,ascatlas-shard-00-02-6fake.mongodb.net:27017/DB?ssl=true&replicaSet=ascatlas-shard-0&authSource=admin
执行此操作时,初始连接正常工作,但随后出现权限问题的错误无法在“DB数据库”中列出集合上的索引。我正在连接的用户凭据是Atlas Admin,因此不确定我可以提供哪些其他权限。有什么想法吗?
profile:mongoose MongoDB connection established +5s
profile:mongoose profiles ensureIndex { identityID: 1 } { unique: 1, background: true } +5ms
/API-User/node_modules/mongoose/lib/utils.js:423
throw err;
^
MongoError: user is not allowed to do action [listIndexes] on [DB.$cmd]
at queryCallback (/API-User/node_modules/mongodb-core/lib/cursor.js:223:25)
at /API-User/node_modules/mongodb-core/lib/connection/pool.js:541:18
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
答案 0 :(得分:1)
似乎用户没有listIndexes的权限 根据文件
必需的访问权限 执行该命令的用户需要查找system.indexes集合的权限或listIndexes权限操作。读取内置角色至少提供必要的权限。
答案 1 :(得分:0)
我不小心从连接字符串中删除了用户名,因此该用户名只有password
应当位于username:password
的位置,这会在任何数据库上导致此错误。