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

时间:2018-02-25 17:15:14

标签: mongoose meanjs

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

1 个答案:

答案 0 :(得分:0)

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

使用文章模块有一个例子:

如果您转到/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)。