【问题标题】:How to send static html file for dynamic routes in nest.js如何在nest.js中为动态路由发送静态html文件
【发布时间】:2022-11-13 16:05:49
【问题描述】:

我正在将我在 Express.js 上编写的现有项目移动到 Nest.js,最紧迫的问题之一是提供静态 html 页面以更改用户密码。我这几天一直在寻找任何答案,但没有成功。我在 Express.js 上的实现完美运行,这里是:

resetPass.use(express.static(__dirname + "/reset_pass_page"));

resetPass.get("/:id", async (req, res) => {
  try {
  // here I check ID which is JWT and if everything is OK I send the form:
      res.status(200).sendFile(__dirname + "/reset_pass_page/index.html");
  }

现在我正在尝试使用 Nest.js 达到相同的结果。我有一个用于重置密码和发送用户电子邮件链接的模块。这是控制器:

@Controller('users/resetpass')
export class ResetPassController {
  constructor(private readonly resetPassService: ResetPassService) { }

  // here is others routes for getting reset link on user's email and etc...

  // in this part I'm sending the form:
  @Get("requestform/:id")
  sendResetPasswordForm(@Param("id") resetToken: string) {
    return this.resetPassService.sendResetPasswordForm(resetToken)
  }
}

在我的情况下,我应该在服务中做什么?

async sendResetPasswordForm(resetToken: string) {
  try {
  // checking resetToken and if it's OK send form like:
  res.sendFile(__dirname + "/reset_pass_page/index.html");
  What method should i use in that case?
  }
}

我已经尝试在我的重置通道模型中使用 ServeStaticModule,但我无法使其与动态路由一起正常工作。我试过这个配置:

 ServeStaticModule.forRoot({
   rootPath: join(__dirname, '../../../static/resetpass'),
   renderPath: /(\/users\/resetpass\/requestform\/)([\w-]*\.[\w-]*\.[\w-]*)/g,
}),

我可以让它适用于没有 ID 的路线,比如用户/重置密码/,但我需要这些页面仅适用于类似的路线用户/resetpass/:id.

我期待着任何帮助和建议。谢谢!

【问题讨论】:

    标签: express nest


    【解决方案1】:

    与您在 Express.js 中所做的类似,

    res.status(200).sendFile(__dirname + "/reset_pass_page/index.html");

    你也可以在 Nest.js 中使用.sendFile

    @Get("requestform/:id")
    sendResetPasswordForm(@Req() req: Request, @Res() res: Response) {
      const resetTokenPath = this.resetPassService.sendResetPasswordForm(pararms.id)
      res.sendFile(join(__dirname, resetTokenPath, '/reset_pass_page/index.html'));
    }
    

    您必须从 Express 添加几个装饰器和类型:

    import { Controller, Get, Res, Req } from '@nestjs/common';
    import { Response, Request } from 'express';
    

    【讨论】:

      猜你喜欢
      • 2019-08-14
      • 1970-01-01
      • 2021-09-07
      • 2020-08-03
      • 2018-12-23
      • 2022-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多