Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Nest.js中的嵌套拦截器_Node.js_Typescript_Nestjs - Fatal编程技术网

Node.js Nest.js中的嵌套拦截器

Node.js Nest.js中的嵌套拦截器,node.js,typescript,nestjs,Node.js,Typescript,Nestjs,如何在Nest.js中实现嵌套拦截器 我有两个拦截器:UsersInterceptor和postsintterceptor 用户接收器: @Injectable() export class UsersInterceptor<T> implements NestInterceptor<T, Response<T>> { intercept(context: ExecutionContext, next: CallHandler): Observable&l

如何在Nest.js中实现嵌套拦截器

我有两个拦截器:
UsersInterceptor
postsintterceptor

用户接收器:

@Injectable()
export class UsersInterceptor<T> implements NestInterceptor<T, Response<T>> {
  intercept(context: ExecutionContext, next: CallHandler): Observable<Response<T>> {
    return next.handle().pipe(map(data => ({
      id: data._id,
      email: data.email,
      createdAt: data.createdAt
    })));
  }
}
@Injectable()
export class PostsInterceptor<T> implements NestInterceptor<T, Response<T>> {
  intercept(context: ExecutionContext, next: CallHandler): Observable<Response<T>> {
    return next.handle().pipe(map(data => ({
      id: data._id,
      title: data.title,
      content: data.content,
      user: {}, // I want the UsersInterceptor result here. I have the user's data in data.user
      createdAt: data.createdAt
    })));
  }
}
@Injectable()
导出类UsersInInterceptor实现NestInterceptor{
拦截(上下文:ExecutionContext,下一步:CallHandler):可观察{
返回next.handle().pipe(映射(数据=>({
id:数据。\u id,
电子邮件:data.email,
createdAt:data.createdAt
})));
}
}
PostsInterceptor:

@Injectable()
export class UsersInterceptor<T> implements NestInterceptor<T, Response<T>> {
  intercept(context: ExecutionContext, next: CallHandler): Observable<Response<T>> {
    return next.handle().pipe(map(data => ({
      id: data._id,
      email: data.email,
      createdAt: data.createdAt
    })));
  }
}
@Injectable()
export class PostsInterceptor<T> implements NestInterceptor<T, Response<T>> {
  intercept(context: ExecutionContext, next: CallHandler): Observable<Response<T>> {
    return next.handle().pipe(map(data => ({
      id: data._id,
      title: data.title,
      content: data.content,
      user: {}, // I want the UsersInterceptor result here. I have the user's data in data.user
      createdAt: data.createdAt
    })));
  }
}
@Injectable()
导出类PostsInterceptor实现NestInterceptor{
拦截(上下文:ExecutionContext,下一步:CallHandler):可观察{
返回next.handle().pipe(映射(数据=>({
id:数据。\u id,
标题:data.title,
内容:data.content,
user:{},//我想在这里得到UsersInterceptor结果。我在data.user中有用户的数据
createdAt:data.createdAt
})));
}
}

现在,当我使用
UserInterceptor
时,我想将
UserInterceptor
的结果放入
PostsInterceptor
中的
user对象中。

拦截器按绑定顺序处理传入请求,按绑定的相反顺序处理传出响应。这意味着,如果您像
@UseInterceptors(PostInterceptor,UserInterceptor)那样绑定拦截器
那么您应该能够在
PostInterceptor

中看到
UserInterceptor
的返回,我如何告诉
PostsInterceptor
UsersInterceptor
加载
用户
对象?它应该在返回的
数据中。只要
UserInterceptor
将其添加到返回的数据中,它就会存在