我正在使用expressjs框架构建一个nodejs应用程序。我想问一下我们如何使用和尚连接到mongodb?我在网上找到了这个代码,但似乎我们不需要指定用户名和密码。为什么会这样?
var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/nodetest1');
感谢任何建议。
答案 0 :(得分:16)
有两种传递用户名/密码的方法:
// first:
var db = monk('USERNAME:PASSWORD@localhost:27017/nodetest1');
// second:
var db = monk('localhost:27017/nodetest1', {
username : 'USERNAME',
password : 'PASSWORD'
});
记录不完善,但由于monk
使用mongoskin
,您可以查看here以获取更多信息。
答案 1 :(得分:3)
我想为上面的答案添加一个替代方案,因为它既不适合我。
所以我能够连接到mongod --auth
实例的方式是:
1.确保在以具有相应权限的用户身份登录mongodb时创建用户,以在数据库上创建用户(例如具有角色userAdminAnyDatabase
的用户)。如果您没有具有此角色的用户,请仅使用mongod
而不使用--auth
重新启动mongo,并以超级用户(如果有)或使用简单mongo
命令登录并进行此操作具有适当权限的用户。
我强烈建议您在这里阅读mongodb角色:http://docs.mongodb.org/manual/reference/built-in-roles/
2.一旦您使用应该创建其他用户的相应用户登录到您的数据库实例,请键入use db_name
,其中db_name是您要为其创建用户的数据库的名称。< / p>
3.Once inside 此数据库使用db.createUser命令,如下所示:db.createUser({user:"your_username", pwd:"your_password", roles:["your_role"]})
它在此处记录:http://docs.mongodb.org/manual/reference/method/db.createUser/
4.然后在代码中使用db = monk('USERNAME:PASSWORD@localhost:27017/DATABASE_NAME')
。
完成此操作后,您应该能够使用您为该用户创建的特定数据库的用户登录正在运行的mongod --auth实例。
答案 2 :(得分:0)
在apps.js
:
var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/ta');
module.exports = db;
在/lib/mylib.js
:
var db = require('../apps.js')
虽然我建议创建一个名为db.js的单独文件,然后在该文件中导出连接,这样会更清晰。