我有一个角色为Compile
的用户,它应该可以访问我的mongo实例中的所有数据库。我在node.js中使用{role: 'root', db:'admin'}
与mongo进行交互。我的问题是它没有正确访问我的数据库。如果我使用
mongoskin
它只是给了我mongodb://owner:mylocalpassword@localhost:27017/mydatabase
。如果我改为使用:
MongoError: Authentication failed
它进行身份验证,但我无法访问mongodb://owner:mylocalpassword@localhost:27017/admin
。
这是我的连接代码:
mydatabase
我认为,因为我在那里访问管理数据库,所以它是唯一与之交互的数据库。所以我试着这样做:
var connection = mongoskin.db("mongodb://owner:mylocalpassword@localhost:27017/admin", {journal:true, auto_reconnect:true})
但是当我使用它时,我的应用程序没有返回查询我知道有数据的集合的结果。我在这做错了什么?如何让此用户访问var mydatabaseConnection = connection.db('mydatabase')
以外的数据库?
答案 0 :(得分:1)
好的,所以我发现mongoskin的db
方法根本不起作用。最后,我被迫从我的代码库中完全删除了mongoskin。这里真正的答案是不要使用mongoskin。
此代码适用于mongo native:
MongoClient.connect("mongodb://owner:mylocalpassword@localhost:27017/admin", {journal: true, auto_reconnect:true}).then(function(db) {
console.log("Connected!")
var mydb = db.db('mydatabase')
var User = mydb.collection('User')
return User.find({}).toArray().then(function(users) {
console.log(users)
db.close()
})
}).catch(function(e) {
console.log(e.stack)
})