当我使用时,一切都很好:CCD_ 1。添加与数据库的身份验证后:mongodb://user:pwd@0.0.0.0:27017/?authSource=data
停止工作。
在此之前,我填充了数据库data
并创建了一个新用户:
use data
db.createUser(
{
user: "user",
pwd: "pwd",
roles: [
{ role: "dbAdmin", db: "data" },
]
}
)
db.grantRolesToUser(
"user",
[ "readWrite" , { role: "read", db: "data" } ],
{ w: "majority" , wtimeout: 4000 }
)
我更改了mongod.cfg
文件:
security:
authorization: enabled
但它无论如何都不起作用,后端连接到数据库,但请求是空的,就好像后端无法访问数据库中的数据一样。
server.js在后端:
const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');
const app = express();
const db = "mongodb://user:pwd@0.0.0.0:27017/?authSource=data";
const PORT = 3000;
const api = require('./routes/api');
app.use(cors());
app.use(express.urlencoded({ extended: true }));
app.use(express.json())
app.use('/api', api);
mongoose
.connect(db, {
useFindAndModify: false,
useUnifiedTopology: true,
useNewUrlParser: true,
})
.then(() => console.log('Connected to mongodb!'))
.catch(err => {
console.log(Error, err.message);
});
app.listen(PORT, function () {
console.log('Server running on localhost:' + PORT);
});
我解决了我的问题。原因是连接字符串中的authSource
。
之前:
"connectionString": "mongodb://user:pwd@0.0.0.0:27017/?authSource=data"
之后:
"connectionString": "mongodb://user:pwd@0.0.0.0:27017/data"
现在运行良好。