node.js,ExpressでmodelをmongoDB.db(test)にinsertしたいが
MongoError: command insert requires authentication
のエラーです。
insert
の権限を要求しているのは分かるのですが、User設定はデータベースadmin
に以下のように書き込んでいるので、他の理由があると推測していますが、よく分かっていません。
色々試してみた結果、ターミナルにmongo
コマンドで起動した場合、コマンドを打ち込むと(例)db.getUsers()
uncaught exception: Error: command usersInfo requires authentication :
と上記のエラーと同じような要求をされます。
ちなみにmongo -u root
と打ち込むと見ることが出来ます(下記参考)。
mongo
は設定が未完了でExpressのcontroller側(【参考】)がコチラ側を指定しているのではないかと推測します。
ただ、どうやって上記エラーを解消出来るのか分からないので、お聞きします。
宜しくおねがいします。
> use admin > db.getUsers() [ { "_id" : "admin.root", "userId" : UUID("85e20fda-493c-4eaf-999e-f4dc9515e25d"), "user" : "root", "db" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" }, { "role" : "readWriteAnyDatabase", "db" : "admin" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] } ]
【参考】 Express controller.js
const express = require('express'); const router = express.Router; const mongoose = require('mongoose'); //mongDB起動 mongoose.Promise = global.Promise; mongoose.connect('mongodb://127.0.0.1:27017/admin', { useNewUrlParser: true, useUnifiedTopology: true }, ); mongoose.connection.on('error', function(err) { console.error('MongoDB connection error: ' + err); }); const schema = require('../models/model'); const Model = mongoose.model('Model', schema); exports.login = function(req, res){ res.render('login', {title: 'Laravel'}); }; exports.loginPost = function(req, res){ const model = new Model(); console.log(model); //req.bodyの中にlogin.ejsのフォーム・インプットのデータが入っていることが前提 model.name = req.body.name; model.password= req.body.password; model.passwordComfirm = req.body.passwordComfirm; console.log(model.password + ':' + model.passwordComfirm); console.log(model.name); if (model.password === model.passwordComfirm && model.password.length >= 7) { model.save(function(err){ if (err) { res.send('error:::'+err);//ここで"command insert requires authentication" } else { //パスワード認証作業をここでする res.render('home', {title: 'Laravel'}); } }); } else { res.send('パスワードが違うか文字数が7以下です'); } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/09 20:26
2021/02/09 22:57
2021/02/10 09:58