我正在开发一个API,可以汉德用户(只是为了简单起见)做基本的crud操作。我得到了用户服务,如下所示:
@Injectable()
export class UsersService {
constructor(
@InjectRepository(User)
private usersRepository: Repository<User>,
) { }
...
async findById(id: number): Promise<User> {
return this.usersRepository.findOne(id);
}
和控制器:
@UseGuards(JwtAuthGuard)
@UseInterceptors(ClassSerializerInterceptor)
@UseFilters(QueryFailedExceptionFilter)
@Controller('users')
export class UsersController {
constructor(private readonly _userService: UsersService) { }
@Get(':id')
findById(@Param('id', ParseIntPipe) id: number): Observable<User> {
return from(this._userService.findById(id));
}
这有效,我可以找到,创建,删除等。问题是,如果我尝试 finOne 用户( Get(:id) 从我的控制器 ) 并且如果它不存在,它只是返回一个 200 ok 而没有对客户端的响应,但它应该是一个 404,因为找不到资源。
阅读我理解的文档(希望我做对了),我们可以返回一个可观察的,它将被自动转录。所以问题是,如果findOne的结果为空,在哪里以及如何汉尔德,并返回具有适当状态的响应,当然使用可观察量。
我试图找到一些例子,但我只找到几个使用承诺的例子,大多数时候他们只是忽略了找不到用户的情况。
PD:“他们”说我应该在控制器中哈兰德
ibeautiful
相关分类