当需要字段时,Mongoose无法更新现有文档

问题描述 投票:0回答:1

我使用MEANjs创建应用程序并使用yo生成器添加了CRUD模块。我还在应用程序中注册了两个用户。之后使用'用户1'我创建了一些记录。现在我需要允许'用户2'更新'用户1'的记录。默认情况下,这是不允许的,但我需要覆盖该逻辑,并允许每个具有角色“user”的用户编辑每个现有记录,甚至是那些不是由他创建的记录。我无法找到如何做到这一点。任何人都可以分享一些见解吗?

mongoose meanjs
1个回答
0
投票

由于您似乎并不希望每个用户都具有“admin”角色(授予总控制权),因此您需要编辑CRUD模块中的策略文件。

使用Articles模块有一个例子:

如果你去/modules/articles/server/policies/articles.server.policy.js,你需要更新角色“user”的权限:

, {
    roles: ['user'],
    allows: [{
      resources: '/api/articles',
      permissions: ['get']
    }, {
      resources: '/api/articles/:articleId',
      permissions: ['get']
    }]
  },

要允许任何用户编辑文章,请为该数组添加“put”权限:

, {
      resources: '/api/articles/:articleId',
      permissions: ['get', 'put']
}

其他可能的解决方案是在Article模型模式(位于/modules/articles/server/models/article.server.model.js中)中创建一个ObjectIds数组,该模型将存储允许编辑文章的所有用户ID。像这样的东西:

allowedUsers: [{ type : ObjectId, ref: 'User' }]

但是,通过这种方式,您需要为策略文件中定义的isAllowed中间件添加更多逻辑,以便每当有人更新文章时,您将检查article.allowedUsers数组是否包含发出请求的用户的id(req.user id )。

© www.soinside.com 2019 - 2024. All rights reserved.