我一直在寻找一个解决这个错误的年龄,并尝试了所有的建议,这个网站已经,但仍然没有运气。我试图创建一个网站,用户可以注册,所以我想保存他们的凭据在一个数据库中。这里是我的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驱动程序是否兼容,但仍然出现此错误。有人能帮助我吗?
我已经看了解决方案已经张贴在这里,但似乎没有工作。
1条答案
按热度按时间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