相关疑难解决方法(0)

Decorator在Nest控制器中返回404

我正在使用NestJS开发后端(这真是太棒了).我有一个'标准获取实体情况的单一实例',类似于下面这个例子.

@Controller('user')
export class UserController {
    constructor(private readonly userService: UserService) {}
    ..
    ..
    ..
    @Get(':id')
    async findOneById(@Param() params): Promise<User> {
        return userService.findOneById(params.id);
    }
Run Code Online (Sandbox Code Playgroud)

这非常简单且有效 - 但是,如果用户不存在,则服务返回undefined,并且控制器返回200状态代码和空响应.

为了让控制器返回404,我想出了以下内容:

    @Get(':id')
    async findOneById(@Res() res, @Param() params): Promise<User> {
        const user: User = await this.userService.findOneById(params.id);
        if (user === undefined) {
            res.status(HttpStatus.NOT_FOUND).send();
        }
        else {
            res.status(HttpStatus.OK).json(user).send();
        }
    }
    ..
    ..
Run Code Online (Sandbox Code Playgroud)

这是有效的,但代码更多(是的,它可以重构).

这可能真的使用装饰器来处理这种情况:

    @Get(':id')
    @OnUndefined(404)
    async findOneById(@Param() params): Promise<User> {
        return userService.findOneById(params.id);
    }
Run Code Online (Sandbox Code Playgroud)

任何人都知道这样做的装饰者,或者比上面的解决方案更好的解决方案?

javascript node.js nestjs

5
推荐指数
4
解决办法
3010
查看次数

如何将所有路由重定向到 nest.js 中的 index.html (Angular)?

我正在制作 Angular + NestJS 应用程序,我想index.html为所有路由发送文件。

主文件

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.useStaticAssets(join(__dirname, '..', 'frontend', 'dist', 'my-app'));
  app.setBaseViewsDir(join(__dirname, '..', 'frontend', 'dist', 'my-app'));
  await app.listen(port);
}
Run Code Online (Sandbox Code Playgroud)

app.controller.ts

@Controller('*')
export class AppController {

  @Get()
  @Render('index.html')
  root() {
    return {};
  }
}
Run Code Online (Sandbox Code Playgroud)

当我打开时它工作正常localhost:3000/,但是如果我打开localhost:3000/some_route服务器会出现500 internal error并说Can not find html module。我在搜索为什么我会收到这个错误,每个人都说set default view engine like ejs or pug,但我不想使用某些引擎,我只想发送由 angular 构建的纯 html,而不像res.sendFile('path_to_file'). 请帮忙

javascript node.js express typescript nestjs

5
推荐指数
1
解决办法
7096
查看次数

标签 统计

javascript ×2

nestjs ×2

node.js ×2

express ×1

typescript ×1