首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nodejs和Monk进行Mongodb身份验证

使用nodejs和Monk进行Mongodb身份验证
EN

Stack Overflow用户
提问于 2016-09-09 08:07:03
回答 2查看 2.5K关注 0票数 1

当我试图在我的app.js文件中已经(似乎)成功连接到的mongodb上查询集合时,我总是得到一个错误。

代码语言:javascript
复制
var mongo = require('mongodb');
var monk = require('monk');
var db = monk('mongodb://USERNAME:PASSWORD@localhost:27017/test_db');

var app = express();

// Make our db accessible to our router
app.use(function(req,res,next){
        req.db = db;
        next();
});

它连接,然后在我的路由器文件中:

代码语言:javascript
复制
/* users.js*/

router.post('/login', function(req, res, next) {

   var params = req.body;
   var userid = params.userid;
   var pw     = params.password
   var db = req.db;
   var userdb = db.get('users');
   userdb.findOne({'userid' : userid}, function(e,user) {
     if (e) {
       console.log("error reading user doc ->");
       console.log(e);
       return;
     } else {
       ....
     }
  });
});

在查询集合后,我得到以下错误:

代码语言:javascript
复制
{ [MongoError: auth failed] name: 'MongoError', ok: 0, errmsg: 'auth failed', code: 18 }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-21 04:16:03

查看MongoDB文档中的选项:

http://mongodb.github.io/node-mongodb-native/2.1/reference/connecting/connection-settings/

您会注意到用户名和密码不是有效的选项。如果您正在连接到test_db,并且您的根用户位于另一个数据库(假设是admin)中,那么您应该使用authSource: admin。您的连接字符串将如下所示:

代码语言:javascript
复制
var db = monk('user:pass@localhost:27017/test_db',{authSource:'admin'});

当我试图连接到我的数据库时,这让我感到困惑,但我的身份验证用户在另一个数据库中。

希望它能帮助一些人!

票数 4
EN

Stack Overflow用户

发布于 2016-09-09 11:11:06

代码语言:javascript
复制
var db = monk('localhost:27017/test_db', {
  username : 'USERNAME',
  password : 'PASSWORD'
});
or
var db = monk('USERNAME:PASSWORD@localhost:27017/test_db');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39401906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档