Nestjs Crud:筛选加入请求以仅返回当前用户的数据

Nestjs Crud:筛选加入请求以仅返回当前用户的数据,nestjs,typeorm,Nestjs,Typeorm,目前我的控制器中有他的: @Crud({ model: { type: Broker }, query: { join: { user: { eager: true, exclude: ['password'] } } } }) @Controller('broker') @UseGuards(AuthGuard('jwt')) export class BrokerController { co

目前我的控制器中有他的:

@Crud({
  model: {
    type: Broker
  },
  query: {
    join: {
      user: {
        eager: true,
        exclude: ['password']
      }
    }
  }
})
@Controller('broker')
@UseGuards(AuthGuard('jwt'))
export class BrokerController {
  constructor(public service: BrokerService) {}
}

用户和代理之间存在一对多关系。我正在通过jwt令牌对用户进行身份验证,我需要过滤用户id上的数据。有没有办法通过Crud配置实现这一点?

您可以创建一个中间件,从会话中将用户id添加到req.params。
这是一个技巧,但到目前为止,我还没有看到另一个解决方案,正如@ilker之前回答的那样:

@CrudAuth({
  property: 'user',
  filter: (user) => ({
    userid: user.userid,
  })
})
@CrudAuth({
  property: 'user',
  filter: (user) => ({
    userid: user.userid,
  })
})
这将从JWT令牌中获取“用户”,您可以使用它来过滤实体

@nestsjx/crud是一个非常棒的库


关于

是因为
经纪人
有许多
用户
?您是否需要通过一些特殊的URL使用它?据我所知,它提供了自定义查询方法。因此,如果它位于特定的路径上,您可以使用当前用户的idOne轻松查询。用户可以有多个代理,但一个代理属于一个用户—一对多。你能举个例子吗?我看到你在github问题页面上已经有了相同的答案:)这里是一个为其他人提供的“黑客”解决方案的链接:请通过一些解释来提高你的答案的质量。感谢你为@ilker的答案添加细节,这可能有助于理解该解决方案。然而,让两个答案如此相似,我有点不舒服。最好是在他们的帖子上建议编辑,或者在这里给他们明确的代码(你几乎用“之前的回复”做到了这一点)。