[0] Unhandled rejection MongoError: (Unauthorized) not authorized on admin to execute command { listIndexes: "sessions", cursor: { } }
[0] at MongoError.create (/Users/biggahd/Desktop/Mars-EMS-1/backend/node_modules/mongodb-core/lib/error.js:31:11)
[0] at queryCallback (/Users/biggahd/Desktop/Mars-EMS-1/backend/node_modules/mongodb-core/lib/cursor.js:212:36)
[0] at /Users/biggahd/Desktop/Mars-EMS-1/backend/node_modules/mongodb-core/lib/connection/pool.js:469:18
[0] at process.processTicksAndRejections (node:internal/process/task_queues:77:11)
我已经在 MongoDB Atlas 上的自定义角色中启用了 listIndexes,我基本上已经批准了所有操作,但仍然收到此错误。
我使用的是最旧版本的 MongoDB。我被这样指示。 -> 2.0.14(也许这就是问题所在?
我正在使用 Sails.js 的 newset 版本 -> v1.5.7
有人可以指导我解决此错误消息吗?
简短的回答 - 不要使用自动迁移。虽然很方便,但即使是 sails 本身也不推荐:
连接到包含您关心的数据的数据库时,切勿启用自动迁移。
考虑到您选择了自定义角色,开发便利性无论如何都不是首要任务。
答案很长。
Sails 尝试将您的模型与数据库同步。由于您在模型级别定义索引,因此它会尝试从数据库获取索引来计算增量并构建更新命令。
为什么它尝试在管理数据库上执行此操作 - 这是一个很大的谜团,这需要一些调试才能执行 RCA。可能存在一些配置错误,但我在静态代码分析的存储库中找不到任何明显的东西。
如果您使用免费/共享 Atlas 层(M0、M2、M5),则无论角色如何,您都无权访问管理数据库。