我正在尝试直接从我们的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不是函数 web_1 |在/app/app.js:47:6。
我试图改为使用db.addUser,但是,由于Mongo 2.6并且不工作,因此db.adminCommand服务相同的错误,db.adminCommand不是函数。在此之前,我努力使用Node在数据库中创建自定义角色,并决定通过Mongo shell进行自定义角色,但在数据库中添加用户1时,它不是一个选项。
当我在Mongo shell中使用这些函数时,命令正在运行,所以我认为它来自我在服务器中实现Mongo的方式(通过Docker),或者由于Javascript的一些限制。知道它会是什么?
先感谢社区!
答案 0 :(得分:0)
我无法使用
这样的代码将用户添加到管理数据库中var Db = require('mongodb').Db,
MongoClient = require('mongodb').MongoClient,
Server = require('mongodb').Server;
var db = new Db('admin', new Server('localhost', 27017));
db.addUser('superuser', '1234', {
roles: [ "userAdminAnyDatabase",
"dbAdminAnyDatabase",
"clusterAdmin",
"readWriteAnyDatabase"
]
},
function(err, result) {
if (err) { return console.log(err);
}
console.log("Added.");
});
它会引发类似错误
TypeError: Cannot read property 'maxWireVersion' of null
at AddUserOperation._buildCommand (/home/sp/practice/myapp/node_modules/mongodb/lib/operations/add_user.js:46:56)
at AddUserOperation.execute (/home/sp/practice/myapp/node_modules/mongodb/lib/operations/command.js:82:22)
at AddUserOperation.execute (/home/sp/practice/myapp/node_modules/mongodb/lib/operations/add_user.js:87:11)
at executeOperation (/home/sp/practice/myapp/node_modules/mongodb/lib/operations/execute_operation.js:81:17)
at Db.addUser (/home/sp/practice/myapp/node_modules/mongodb/lib/db.js:823:10)
at Object.<anonymous> (/home/sp/practice/myapp/app/config/db.js:25:8)
at Module._compile (internal/modules/cjs/loader.js:805:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:816:10)
at Module.load (internal/modules/cjs/loader.js:672:32)
at tryModuleLoad (internal/modules/cjs/loader.js:612:12)
at Function.Module._load (internal/modules/cjs/loader.js:604:3)
at Module.require (internal/modules/cjs/loader.js:711:19)
at require (internal/modules/cjs/helpers.js:14:16)
at Object.<anonymous> (/home/samprathyusha/practice/myapp/app.js:26:1)
at Module._compile (internal/modules/cjs/loader.js:805:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:816:10)