데이터베이스에 Mongo 3.4를 사용하여 Express 서버에서 직접 데이터베이스에 사용자를 만들려고합니다. 그러나서버의 Mongo에서 사용자 또는 사용자 정의 역할을 만들 수 없음 NodeJS
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://mongo:27017/myDb';
var dbvotes = "collection1";
var dbusers = "collection2";
//Functions for users
app.post('/newUser', function(req, res, db) {
MongoClient.connect(url, function(err, db){
//Ecriture dans la base user
db.collection(dbusers).insertOne({
"name" : req.body.name,
"surname" : req.body.surname,
"username" : username,
"password" : "pasadmin",
});
//Creation of the user in the DB
db.createUser({ 'user': username, 'pwd': "pasadmin", roles: [] });
db.close();
});
console.log("Inserted a new user in the database.");
res.send("User added. Click precedent to add a new user.");
});
, 클라이언트가 새 사용자를 삽입하려고 할 때마다 효과적으로 아니라 데이터베이스의 사용자로 내가 얻을로, 사용자 컬렉션에 생성됩니다 : 여기에 지금은 서버의 코드는 다음 오류 : TypeError : db.createUser가 함수가 아닙니다. web_1 | /app/app.js:47:6에 있습니다.
대신 사용자 db.addUser를 사용해 보았습니다. 그러나 Mongo 2.6 이후에는 사용되지 않으며 db.adminCommand도 동일한 오류를 처리합니다. db.adminCommand는 함수가 아닙니다. 그 전에는 Node를 사용하여 데이터베이스에 사용자 지정 역할을 만들려고 애썼지 만 Mongo 셸을 통해 작업하기로 결정했지만 사용자 1을 데이터베이스에 추가 할 때는 옵션이 아닙니다.
이러한 기능을 Mongo 셸에서 사용할 때 명령이 작동하므로 Docker를 통해 서버 내에서 Mongo를 구현 한 방식이나 Javascript의 일부 제한으로 인해 발생한다고 생각됩니다. 어떤 아이디어 일 수 있니?
미리 커뮤니티에 감사드립니다.
도움을 주셔서 감사합니다! 그러나 이것은 효과가없는 것 같습니다. db.admin (.) 사용. addUser는 다음 메시지를 전달합니다 : MongoDB> = 2.6에서는 역할이없는 사용자 생성이 더 이상 사용되지 않습니다. MongoDB 3.4를 사용할 때 논리로 보입니다. 메시지의 두 번째 부분에 대해서는 유효한 우려 사항이지만 MongoDB에서 액세스 제어 응용 프로그램으로 보안 과정을위한이 응용 프로그램을 개발하고 있습니다. 각 사용자가 프로필을 가져 오는 것이 좋습니다. 수집 및 사용자 모두의 DB –
내 의견을 수정했습니다. 수신 한 메시지는 경고 일 뿐이므로주의를 기울여 역할을 수행합니다 (기본값은 dbOwner이며 아마도 언젠가는 중단됩니다). 드라이버가 일반적인 MongoDB를 따르지 않고'db'에'addUser'를 유지하는 것처럼 보입니다. – vox
역할이 추가되면 작동합니다! 코드의 나머지 부분을 적용하여이 작업 코드를 계속 작성하도록하겠습니다. 시간과 전문 지식에 감사드립니다. –