作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试返回不同类型异常的自定义状态代码。尽管我正确地收到了响应,但我无法在不导致错误的情况下做到这一点。该错误仅发生在 if 条件 block 内(如果我在发布请求中发送文件)。 else block 中没有错误。
错误:检测到循环依赖
// Below code gives this error => Error: cyclic dependency detected
import { Controller, Post, Req, Res, UseInterceptors, UploadedFile } from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';
import { Request, Response } from 'express';
@Controller('testing')
export class TestController {
constructor() { }
@Post('/upload')
@UseInterceptors(FileInterceptor('file'))
upload(@UploadedFile() file, @Res() response: Response) {
if (file && file !== undefined) {
return response.status(200).json({
status: "OK",
message: "File Uploaded"
});
} else {
return response.status(400).json({
status: "BAD REQUEST",
message: "File not found"
});
}
}
}
最佳答案
不久前我也遇到过类似的错误。
如果您确实想使用@Res
,请尝试将其与maintain compatibility with Nest standard response handling的passthrough
参数一起使用。 .
类似这样的东西(我做了一些重构以使其更干净)
@Post("/upload")
@UseInterceptors(FileInterceptor("file"))
upload(@UploadedFile() file, @Res({ passthrough: true }) res: Response) {
if (file) {
res.status(HttpStatus.OK).json({
status: "OK",
message: "File uploaded",
});
} else {
res.status(HttpStatus.BAD_REQUEST).json({
status: "BAD REQUEST",
message: "File not found",
});
}
}
p.s.:并尝试使用 HttpStatus
枚举来使代码更具可读性
但是有一个更好、更干净的解决方案。如果文件不存在,您只需抛出 BadRequestException
并包含您想要的消息,NestJS 将神奇地为您处理所有事情 =D
@Post("/upload")
@HttpCode(HttpStatus.OK)
@UseInterceptors(FileInterceptor("file"))
upload(@UploadedFile() file) {
if (!file) {
throw new BadRequestException("File not found!");
}
// do something with the file...
}
关于node.js - 使用 FileInterceptor 上传文件时如何在 NestJs 中返回自定义状态代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63090505/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!