Mongoose中的Mongoose身份validation数据库2.6

除了系统pipe理员 ,我还有数据库ABC

我想添加一个已经读写访问ABC的用户

// attempt 1 use admin db.createUser({ user: "Bob", pwd: "1234", roles: [ { role: "readWriteAnyDatabase", db: "admin" } ] }) 

 // attempt 2 use admin db.createUser({ user: "Bob", pwd: "1234", roles: [ { role: "readWrite", db: "A" }, { role: "readWrite", db: "B" }, { role: "readWrite", db: "C" } ] }) 

对于这些尝试,用户存储在数据库pipe理员 。 那么我怎样才能使用pipe理员进行身份validation,但在ABC之一执行操作?

 var uri = 'mongodb://localhost/A'; var opts = { user: 'Bob', pass: '1234', auth: { authDb: 'admin' } }; mongoose.connect(uri, opts); // auth fails 

我唯一的解决scheme,分别添加一个用户在每个ABC ? 防爆。

 use A db.createUser({...}) use B db.createUser({...}) use C db.createUser({...}) 

似乎愚蠢。

最简单的方法是在uri中指定authSource

 const uri = 'mongodb://monguser:mongpass@192.168.2.2:27017/ps?authSource=admin'; 

看来你必须为每个数据库使用一个Mongoose连接。 在单个node.js项目中查看Mongoose和多个数据库 。