MongoDB |无法更新文档 'role'
MongoDB | Can not update 'role' of document
所以我遇到了无法更新 'role' 文档的问题。
该文档是一个 'user'(MEANjs 中的用户模式)对象,它具有预定义的角色 属性。
这是模式中的角色部分:
roles: {
type: [{
type: String,
enum: ['user','volunteer','participant','manager', 'admin']
}],
default: ['volunteer']
}
我正在通过常规 PUT 请求更新它。
请求 returns 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);
});
};
所以我遇到了无法更新 'role' 文档的问题。 该文档是一个 'user'(MEANjs 中的用户模式)对象,它具有预定义的角色 属性。 这是模式中的角色部分:
roles: {
type: [{
type: String,
enum: ['user','volunteer','participant','manager', 'admin']
}],
default: ['volunteer']
}
我正在通过常规 PUT 请求更新它。 请求 returns 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);
});
};