我正在尝试直接从我们的 Express 服务器在我的数据库上创建用户,使用 Mongo 3.4 作为数据库。这是服务器的代码:
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 is not a function web_1 | 在 /app/app.js:47:6。
我尝试使用 db.addUser 代替,但是,自 Mongo 2.6 以来已弃用,并且也无法正常工作,并且 db.adminCommand 出现相同的错误, db.adminCommand 不是函数。在此之前,我努力使用 Node 在数据库中创建自定义角色,并决定也通过 Mongo shell 来实现,但在数据库中逐个添加用户时,这不是一个选项。
当我在 Mongo shell 中使用这些函数时,命令正在运行,所以我想它来自我在服务器中实现 Mongo 的方式(通过 Docker),或者由于 Javascript 的一些限制。知道会是什么吗?
提前感谢社区!