使用mongoose

时间:2017-07-15 16:29:34

标签: mongodb mongoose

我已按照here的说法在我的MongoDB中设置了auth。最初,在我的项目中,我使用

从mongoose访问单个数据库,firstdb
let url = "mongodb://localhost:27017/firstdb";
let options = {
    server:{
        socketOptions:{
            keepAlive:120
        }
    },
    user:"username1",
    pass:"mypassword1"
};
mongoose.connect(url,options,callback);

usernamemypassword的用户已在firstdb内创建了readWrite个烫发。我在使用管理员用户登录时这样做了。

事情进展顺利。然后我需要连接到第二个数据库。所以我改变了我的代码

let url1 = "mongodb://localhost:27017/firstdb";
let options1 = {
    server:{
        socketOptions:{
            keepAlive:120
        }
    },
    user:"username1",
    pass:"mypassword1",
    auth:{
        authdb:"firstdb"
    }
};
let connection1 = mongoose.createConnection(url1,options1);

let url2 = "mongodb://localhost:27017/seconddb";
let options2 = {
    server:{
        socketOptions:{
            keepAlive:120
        }
    },
    user:"username2",
    pass:"mypassword2",
    auth:{
        authdb:"seconddb"
    }
};
let connection2 = mongoose.createConnection(url2,options2);

这次我在username2数据库中以相同的方式创建了用户seconddb。但是现在mongoose无法执行任何操作,并且Not authorized to execute command失败了。我可以通过mongo shell访问数据库。我还在我的本地系统中启动了代码,该系统没有启用mongodb auth,它在那里工作正常。请帮忙

1 个答案:

答案 0 :(得分:0)

所以,在盲人拍摄后,找到了有效的东西。 使用网址中的用户名和密码,如

let connection1 = mongoose.createConnection("mongodb://username1:password1@localhost:27017/firstdb");

尽管如此,我想知道为什么传递参数作为选项并不起作用。