gpt4 book ai didi

javascript - MongoDB |无法更新文档的 'role'

转载 作者:行者123 更新时间:2023-12-03 08:41:27 25 4
gpt4 key购买 nike

所以我遇到了无法更新文档“Angular 色”的问题。该文档是一个“用户”(MEANjs 中的用户模式)对象,它具有预定义的 Angular 色属性。这是架构中的 Angular 色部分:

roles: {
type: [{
type: String,
enum: ['user','volunteer','participant','manager', 'admin']
}],
default: ['volunteer']
}

我正在通过常规 PUT 请求更新它。请求返回 OK (200),但没有任何变化。如果我使用相同的方法来更新另一个字段(我创建的自定义字段),则效果很好。

有什么线索吗?也许这里有枚举?

谢谢!

PS - 文档的版本 (__v) 已关闭,因此与此无关

最佳答案

这确实是预期的行为,因为如果您尝试以用户身份更新配置文件,则默认情况下会删除 Angular 色作为安全措施,否则任何用户都可以向自己添加 Angular 色并获得例如管理员权限。要删除它们的文件是 /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 版本中,如果您具有管理员权限,则可以更改任何用户 Angular 色(检查文件 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);
});
};

关于javascript - MongoDB |无法更新文档的 'role',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33037901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com