【发布时间】:2020-09-30 03:44:22
【问题描述】:
我正在开发一个 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,因为找不到资源。
阅读我理解的文档(希望我做对了),我们可以返回一个 observable,它会被自动订阅。所以问题是,如果 findOne 的结果是空的,在哪里以及如何处理,并返回一个具有适当状态的响应,当然使用 observables。
我试图找到一些示例,但我只找到了一些使用 Promise 的示例,并且大多数时候他们只是忽略了 not find 用户案例。
PD:“他们”说我应该在控制器中处理它
【问题讨论】:
标签: javascript nestjs