2016-08-31 4 views
0

NodeJSとMongooseで非常に単純なアプリケーションを作成しています。プロダクション(認証)でMongoDBを使用したクエリが機能しない

Mongooseで認証を無効にすると、すべて正常に動作し、データベースからレコードにアクセスできます。しかし、認証をオンにして、認証されたMongoose接続を使用するようにNodeJSコードを設定すると、レコードを照会することはできず、Webページはロードを続けます。

私のデータベースの名前は "熊"です。

P.S.私は "AdminデータベースとBears"データベースで自分のユーザーを作成しました。書籍データベースの読み書きの許可を与えて、 "Mongo"コマンドまたはdb.authコマンドで認証すると正常に動作します。しかし、NodeJS/Mongooseでは動作しません。

ここに私のコードです。 8080 /テスト作品:私のserver.js

var express = require('express');  // call express 
var app  = express();     // define our app using express 
var bodyParser = require('body-parser'); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 

var Bear  = require('../models/bear'); 

var bear = require('express').Router(); 

bear.get('/', function(req, res) { 
    res.json({ message: 'hooray! welcome to our api!' }); 
}); 

bear.get('/bear',function(req, res) { 
     Bear.find(function(err, bears) { 
      if (err) 
       res.send(err); 

      res.json(bears); 
     }); 
}); 
app.use('/test', bear); 
app.listen(8080); 

はlocalhostで

var mongoose  = require('mongoose'); 
var opt = { 
user: 'bearsdev', 
pass: 'bearsdev123!', 
    auth: { 
     authdb: 'bears' 
    } 
}; 

mongoose.connect('mongodb://localhost:27017/bearsdev',opt); 
var Schema  = mongoose.Schema; 

var BearSchema = new Schema({ 
    name: String 
}); 

module.exports = mongoose.model('Bear', BearSchema); 

。 localhost:8080/test/bearは読み込みを続けます。

私はMongooseでさまざまな認証方法を試しました。

mongoose.connect('mongodb://bearsdev:[email protected]:27017?authSource=bearsdev'); 

mongoose.connect('mongodb://bearsdev:[email protected]:27017/bearsdev'); 

これらの方法のどれも私のために働いていません。

答えて

3

次のコードがうまく動作することを願っています。

database = { 
    host: 'localhost', 
    db: 'bears', 
    port: '27017', 
    options: { 
     user: "bearsdev", 
     pass: "bearsdev123!", 
     auth: { 
      authdb: 'admin' 
     } 
    } 
} 

mongoose.connect(database.host, database.db, database.port, database.options, function (err) { 
    if (err) { 
     console.log("connection error:", err); 
    } else { 
     console.log("MongoDB connection successful"); 
    } 
}); 
+0

認証に失敗しました。 mongo -u bearsdev -p bearsdev123! --authenticationDetabase bears うまく動作します。 –

0

私はMongooseのローカルノードモジュールをアンインストールしてから最新のバージョンをインストールすることで問題を解決できました。おそらく、いくつかの中間バージョン(〜3.6.13)がそのバグを持っていました。しかし、最新のモンゴースはいいです。

関連する問題