[英]Mongoose: Set default value in a required field when this is not present in the document to save
[英]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.