Node.js MongoError:未经管理员授权可以执行命令

问题描述 投票:0回答:1

你好,我试图构建一个自定义Express API以便与MongoDB进行通信,但是当我尝试使用Postman进行发布请求时,却不断收到此错误

{
  ok: 0,
  errmsg: 'not authorized on admin to execute command { insert: "users", documents: [[{_id ObjectIdHex("5d962346040f94390c75af87")} {email [email protected]} {password mypassword} {__v 0}]], ordered: true, writeConcern: { w: "majority" }, lsid: { id: {4 [103 212 165 139 101 156 64 219 134 229 99 101 244 58 241 13]} }, txnNumber: 1.000000, $clusterTime: { clusterTime: 6743616258408710147, signature: { hash: [182 133 122 147 115 29 40 38 207 106 105 195 60 131 107 121 63 161 82 165], keyId: 6718054837855977472.000000 } }, $db: "admin" }',
  code: 8000,
  codeName: 'AtlasError',
  name: 'MongoError',
  [Symbol(mongoErrorContextSymbol)]: {}
}

起初,我认为这与MongoDB Atlas上的User Privileges有关,但是我已经尝试了其中的每一个。这是整个项目的样子,并预先感谢您:

index.js

require('./models/User');
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');

const authRoutes = require('./routes/authRoutes');

const app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(authRoutes);

const mongoUri = 'mongodb+srv://myusername:[email protected]/admin?retryWrites=true&w=majority';



mongoose.connect(mongoUri, {
    useNewUrlParser: true,
    useCreateIndex: true,
    useUnifiedTopology: true
});

mongoose.connection.on('connected', () => {
    console.log('Connected to mongo instance')
});

mongoose.connection.on('error', (err) => {
    console.error('Error connecting to mongo', err)
});

app.get('/', (req, res) => {
    res.send('Hi there!');
});

app.listen(3000, () => {
    console.log('Listening on port 3000');
});

/ src / models / User.js

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
    email: {
        type: String,
        unique: true,
        required: true
    },
    password: {
        type: String,
        required: true
    }
});

mongoose.model('User', userSchema);

/ src / routes / authRoutes.js

const express = require('express');
const mongoose = require('mongoose');
const User = mongoose.model('User');


const router = express.Router();

router.post('/signup', async (req, res) => {
    // console.log(req.body);
    const { email, password } = req.body;

    try {
        const user = new User({ email, password });
        await user.save();
    } catch(err){
        console.error(err);
    }
    res.send('You made a post request');
});

module.exports = router;

这就是我的json请求的原始内容如何

{
    "email": "[email protected]",
    "password": "mypassword"
}
node.js mongodb express mongoose
1个回答
0
投票

我目前正面临相同的错误,如果有人帮助解释这一点,我们将非常高兴。

© www.soinside.com 2019 - 2024. All rights reserved.