在我的应用程序中,我使用MongoDB作为数据库,使用Express + Mongoose
来处理代码。我已将用户添加到数据库并为用户提供readWrite
角色,现在我可以从数据库中获取数据。但是当我尝试使用save
中的Express + Mongoose
函数插入集合时,我收到以下错误消息,但我找不到如何向用户添加findandmodify
权限。 / p>
{"name":"MongoError",
"ok":0,
"errmsg":"not authorized on od-database to execute command { findandmodify: \"identitycounters\",
query: {
field: \"id\",
model: \"Products\" },
new: 1 ,
remove: 0,
upsert: 0,
update: { $inc: { count: 1 } } }","code":13}
请帮帮我。
答案 0 :(得分:1)
我测试一位readWrite
角色的用户连接mongoDB
在非系统文档上执行save
和findAndModify
操作他们可以成功地完成。
请确保
mongoose.createConnction
或mongoose.connect
中连接数据库的正确用户名和密码。db.system.users
readWrite
角色。readWrite
用户只能修改所有非系统集合中的数据system.js集合答案 1 :(得分:0)
尝试给他dbAdmin
角色。
答案 2 :(得分:0)
或者尝试禁用授权或添加连接到数据库的用户 将用户添加到数据库的示例:
db.createUser({
user: "admin",
pwd: "test",
roles: [ { role: "dbAdmin", db: "shop" } ]
})
其中:
db:"shop"
- 是名称数据库pwd: "test"
- 密码数据库user: "admin"
- 通过其与数据库建立连接的用户,例如db.auth('admin', 'test')
答案 3 :(得分:0)
如果为bypassDocumentValidation
指定了findAndModify
,则需要dbAdmin
角色或具有bypassDocumentValidation
权限的自定义角色。
最好将布尔参数指定为true
或false
,而不是0
和1
答案 4 :(得分:-1)
我认为这会对你有所帮助: Manage User and Roles in MongoDB