2015-06-22 18 views
9

在我的應用程序中,我使用MongoDB作爲數據庫並使用Express + Mongoose來處理代碼。我已經添加了一個用戶到數據庫,併爲用戶提供了readWrite角色,現在我可以從數據庫中獲取數據。但是,當我試圖插入使用save函數在Express + Mongoose中收集我收到以下錯誤消息,我找不到如何將findandmodify特權添加到用戶。MongoDB - 如何將findandmodify特權添加到用戶

{"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

請分享,展示了數據庫名稱的代碼片段,你是如何調用'mongoose.createConnection'以及如何正在向用戶授予許可。謝謝! –

+0

請在後臺向我們顯示您的代碼,然後我們將幫助您解決此問題。 –

回答

0

嘗試給他dbAdmin的角色。

0

或嘗試禁用授權或添加連接到數據庫的用戶。
將用戶添加到該數據庫的一個例子:

db.createUser({ 
    user: "admin", 
    pwd: "test", 
    roles: [ { role: "dbAdmin", db: "shop" } ] 
}) 

其中:

  • db:"shop" - 是名稱數據庫
  • pwd: "test" - 密碼數據庫
  • user: "admin" - 用戶,通過該連接到數據庫,示例db.auth('admin', 'test')
1

我測試一個用戶與readWrite角色連接mongoDB非系統文檔savefindAndModify操作,他們都可以成功完成。

請確保

  • 正確的用戶名和密碼的數據庫連接在mongoose.createConnctionmongoose.connect
  • 此用戶確實存在於db.system.usersreadWrite角色中。
  • readWrite用戶只能在所有非系統上修改數據藏品system.js收集