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');
これらの方法のどれも私のために働いていません。
認証に失敗しました。 mongo -u bearsdev -p bearsdev123! --authenticationDetabase bears うまく動作します。 –