[英]MongoDB | Can not update 'role' of document
因此,我遇到了無法更新文檔“角色”的問題。 該文檔是一個“用戶”(MEANjs中的用戶架構)對象,它具有其預定義的角色屬性。 這是架構中的角色部分:
roles: {
type: [{
type: String,
enum: ['user','volunteer','participant','manager', 'admin']
}],
default: ['volunteer']
}
我通過常規的PUT請求對其進行更新。 該請求返回OK(200),但沒有任何變化。 如果我使用相同的方法來更新另一個字段(我創建的自定義字段),則效果很好。
有什么線索嗎? 也許這里有枚舉?
謝謝 !
PS-文檔版本( __v
)已關閉,因此與此無關
這確實是預期的行為,因為如果您嘗試以用戶身份更新配置文件,則作為安全措施,默認情況下會刪除角色,否則任何用戶都可以向自己添加角色並獲得例如管理員特權。 刪除它們的文件是/modules/users/server/controllers/users/users.profile.server.controller.js
(最新的MEAN.js版本):
/**
* Update user details
*/
exports.update = function (req, res) {
// Init Variables
var user = req.user;
// For security measurement we remove the roles from the req.body object
delete req.body.roles;
...
在最新的MEAN.js版本中,如果您具有管理員權限,則可以更改任何用戶角色(請檢查modules/users/server/controllers/admin.server.controller.js
):
/**
* Update a User
*/
exports.update = function (req, res) {
var user = req.model;
//For security purposes only merge these parameters
user.firstName = req.body.firstName;
user.lastName = req.body.lastName;
user.displayName = user.firstName + ' ' + user.lastName;
user.roles = req.body.roles;
user.save(function (err) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
}
res.json(user);
});
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.