NestjsデータDtoオブジェクトに変更できないエラー
Nestjsを開発中...クライアントから受信したデータをDTOオブジェクトに変換し、DTOで定義したメソッドを使用してデータ処理中にエラーが発生しました.
ただし、ページオブジェクトはクライアントから受信したデータであり、コントローラによってDTOオブジェクトに変換され、メソッドを呼び出すにはSearchGoodsDtoオブジェクトに変換する必要がありますが、このオブジェクトは変換できません.
コンソールにオブジェクトを撮影すると、空のオブジェクトが見つかり、メソッドが定義されていません...
DTOには2つの役割があります.
1.データをDTOオブジェクトに変換
2.入力したデータが仕様に合致していることを確認する
上記の2つのキャラクターに1番を付けない場合.
では、解決しますね.
main.tsファイルでは、ValidationPipe設定でtrueに変換すればよい.
オブジェクト変換設定が完了したら、コンソールで撮影を行い、データオブジェクトがDTOオブジェクトに変換されているのが見え、メソッド呼び出しが解決しました!
データをDTOに変換していない場合は、DTO変換設定を再度確認してください~!
//컨트롤러코드
@Get('')
getAllGoods(@Query() page: SearchGoodsDto) {
return this.goodsService.getAllGoods(page);
}
//서비스코드
//모든 goods 가져오기
> async getAllGoods(page: SearchGoodsDto) {
const total = await this.goodsRepository.count();
const goods = await this.goodsRepository.find({
take: page.getLimit(),
skip: page.getOffset(),
});
console.log(goods);
return new Page(total, page.pageSize, goods);
}
コードの内容は、直接インポートするのではなく、保存されているすべての商品をインポートすることです.ページナビゲーションでインポートします.ただし、ページオブジェクトはクライアントから受信したデータであり、コントローラによってDTOオブジェクトに変換され、メソッドを呼び出すにはSearchGoodsDtoオブジェクトに変換する必要がありますが、このオブジェクトは変換できません.
コンソールにオブジェクトを撮影すると、空のオブジェクトが見つかり、メソッドが定義されていません...
DTOには2つの役割があります.
1.データをDTOオブジェクトに変換
2.入力したデータが仕様に合致していることを確認する
上記の2つのキャラクターに1番を付けない場合.
では、解決しますね.
main.tsファイルでは、ValidationPipe設定でtrueに変換すればよい.
//main.ts
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(
new ValidationPipe({
/**
* whitelist: DTO에 없은 속성은 무조건 거른다.
* forbidNonWhitelisted: 전달하는 요청 값 중에 정의 되지 않은 값이 있으면 Error를 발생합니다.
* transform: 네트워크를 통해 들어오는 데이터는 일반 JavaScript 객체입니다.
* 객체를 자동으로 DTO로 변환을 원하면 transform 값을 true로 설정한다.
* disableErrorMessages: Error가 발생 했을 때 Error Message를 표시 여부 설정(true: 표시하지 않음, false: 표시함)
* 배포 환경에서는 true로 설정하는 걸 추천합니다.
*/
whitelist: true,
// forbidNonWhitelisted: true,
transform: true,
// disableErrorMessages: true,
}),
);
app.enableCors();
await app.listen(parseInt(process.env.PORT) || 3000);
}
bootstrap();
オブジェクト変換設定が完了したら、コンソールで撮影を行い、データオブジェクトがDTOオブジェクトに変換されているのが見え、メソッド呼び出しが解決しました!
データをDTOに変換していない場合は、DTO変換設定を再度確認してください~!
Reference
この問題について(NestjsデータDtoオブジェクトに変更できないエラー), 我々は、より多くの情報をここで見つけました https://velog.io/@jonghyun3668/NestJs-데이터-Dto-객체로-변경-안되는-오류テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol