2016-09-09 10 views
0

app.jsファイルに正常に接続しているmongodb上のコレクションを照会しようとすると、エラーが発生します。nodejsとMonkとのMongodb認証

/* 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 { 
     .... 
    } 
    }); 
}); 

私がコレクションを照会した後、次のエラーを取得:

var mongo = require('mongodb'); 
var monk = require('monk'); 
var db = monk('mongodb://USERNAME:[email protected]:27017/test_db'); 

var app = express(); 

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

それは私のルータファイルに、次に接続し、

{ [MongoError: auth failed] name: 'MongoError', ok: 0, errmsg: 'auth failed', code: 18 } 
+0

フォーマットの修道士(URL、{ユーザー名、パスワード})も機能していませんでした。問題は、オブジェクトを渡す必要があるときに特殊文字を許可するためのパスワードをURIエンコードすることでした。{uri_decode_auth:true} – dancook808

答えて

1
var db = monk('localhost:27017/test_db', { 
    username : 'USERNAME', 
    password : 'PASSWORD' 
}); 
or 
var db = monk('USERNAME:[email protected]:27017/test_db'); 
+0

2番目のオプションは機能しますが、最初のものは動作させることができませんでした。 –

3

オプションについてはMongoDBのドキュメントをチェックアウト:

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

ユーザー名とパスワードは有効なオプションではありません。 test_dbに接続していて、rootユーザーが別のデータベースにある場合(adminと言う場合)、authSource:adminを使用する必要があります。

var db = monk('user:[email protected]:27017/test_db',{authSource:'admin'}); 

私は私のデータベースにに接続しようとしたとき、これは私を混乱させましたが、私の認証ユーザーは、別だった:あなたの接続文字列は次のようになります。

誰かを助けることを願っています!