簡體   English   中英

當需要一個字段時,貓鼬無法更新現有文檔

[英]Mongoose fails to update existing document when a field is required

我使用MEANjs創建應用程序,並使用yo generator添加了CRUD模塊。 我也在該應用程序中注冊了兩個用戶。 之后,使用“用戶1”創建了一些記錄。 現在,我需要允許“用戶2”更新“用戶1”的記錄。 默認情況下,這是不允許的,但我需要重寫該邏輯,並允許每個具有“用戶”角色的用戶編輯每個現有記錄,即使不是由他創建的記錄也是如此。 我找不到解決方法。 誰能分享一些見解?

由於似乎您並不想讓每個用戶都具有“ admin”角色(授予總控制權),因此您需要在CRUD模塊中編輯策略文件。

使用文章模塊有一個示例:

如果轉到/modules/articles/server/policies/articles.server.policy.js ,則需要更新角色“用戶”的權限:

, {
    roles: ['user'],
    allows: [{
      resources: '/api/articles',
      permissions: ['get']
    }, {
      resources: '/api/articles/:articleId',
      permissions: ['get']
    }]
  },

要允許任何用戶編輯文章,請向數組添加“放置”權限:

, {
      resources: '/api/articles/:articleId',
      permissions: ['get', 'put']
}

其他可能的解決方案是在Article模型模式(位於/modules/articles/server/models/article.server.model.js )中創建ObjectId數組,該數組將存儲允許編輯的所有用戶ID文章。 像這樣:

allowedUsers: [{ type : ObjectId, ref: 'User' }]

但是,通過這種方式,您將需要向策略文件中定義的isAllowed中間件添加更多邏輯,以便每次有人更新文章時,您都將檢查article.allowedUsers數組是否包含發出請求的用戶的ID(要求req.user ID)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM