簡體   English   中英

MongoDB | 無法更新文件的“角色”

[英]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.

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