mongodb 服务器错误:不允许用户执行[操作]

oknwwptz  于 2023-03-17  发布在  Go
关注(0)|答案(1)|浏览(257)

我一直在寻找一个解决这个错误的年龄,并尝试了所有的建议,这个网站已经,但仍然没有运气。我试图创建一个网站,用户可以注册,所以我想保存他们的凭据在一个数据库中。这里是我的Javascript代码片段,我连接到我的数据库在阿特拉斯:

const { MongoClient } = require("mongodb");

const dbURI = 'mongodb+srv://gettingstarted.owxpopb.mongodb.net/GettingStarted';

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

const db = mongoose.connection;

db.on('error', console.error.bind(console, 'connection error:'));

db.once('open', function() {
  console.log('Connected to MongoDB Atlas');
});

在我的命令行中,我得到了'connected to MongoDB Atlas',所以我知道它的连接。

const userSchema = new mongoose.Schema({
  name: String,
  email: String,
  password: String,
  numberOfTickets: {
    type: Number,
    default: 0
  }
});

但是当我使用以下代码保存用户信息/根据现有数据库检查用户信息时:

User.findOne({ email: newUser.email }, (err, existingUser) => {
    if (err) {
      // Handle error
      console.error(err);
      return res.status(500).send({ message: 'Internal server error' });
    }

    if (existingUser) {
      // A user with the same email address already exists
      return res.status(409).send({ message: 'Email address already registered' });
    }

    // If we reach here, it means the user details are not already in the database
    // You can proceed with saving the user to the database
    const newUser = new User(userSchema);
    newUser.save((err, savedUser) => {
      if (err) {
        // Handle error
        console.error(err);
        return res.status(500).send({ message: 'Internal server error' });
      } else{
        res.render("home");
      }
      // User saved successfully
      return res.status(200).send(savedUser);
    });
  });

我得到MongoServer错误:用户不允许在[GettingStarted.users]上执行[find]操作。我尝试将monoDB访问权限安全更新为读写,设置为管理员,检查我使用的node.js驱动程序是否兼容,但仍然出现此错误。有人能帮助我吗?
我已经看了解决方案已经张贴在这里,但似乎没有工作。

sgtfey8w

sgtfey8w1#

对我来说,这是因为我没有在mongoDB中为用户分配角色。您需要将用户角色分配为atlasAdmin。
我也遇到了同样的问题。我的MongoDB正在连接,它显示在控制台中,但我无法创建用户。
我遇到的错误:
服务器错误:不允许用户执行操作[查找]
我按照链接MongoError: user is not allowed to do action中的解决方案
我执行了以下步骤
1.打开您的mongoDB
1.转到数据库访问
1.针对用户单击编辑
1.展开内置用户角色
1.单击角色下拉列表
1.选择atlasAdmin
Click Edit
Expand Built in role

相关问题