当我使用命令
nest g resource
创建新资源或使用已生成的文件 nest g module product
创建新资源时遇到问题,但当我尝试在邮递员中使用 POST
请求时出现问题(我的情况是使用跳房子和邮递员)。但每次我使用控制台日志连接到 createProductDto 来检查请求正文时,它的返回{}
是
产品控制器
import { Body, Controller, Post } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import { CreateProductDto } from './dto/create-product.dto';
import { ProductService } from './product.service'
@Controller('api/products')
@ApiTags('products')
export class ProductController {
constructor(private readonly productService: ProductService) { }
@Post()
async create(@Body() createProductDto: CreateProductDto) {
console.log(createProductDto);
return this.productService.create(createProductDto);
}
}
产品模块
import { Module } from '@nestjs/common';
import { ProductService } from './product/product.service';
import { ProductController } from './product/product.controller';
import { PrismaModule } from 'src/prisma/prisma.module';
@Module({
providers: [ProductService],
controllers: [ProductController],
imports: [PrismaModule]
})
export class ProductsModule { }
创建产品DTO
import { ApiProperty } from '@nestjs/swagger';
export class CreateProductDto {
@ApiProperty()
title: string;
@ApiProperty({ required: false })
description: string;
@ApiProperty()
body: string;
@ApiProperty({ required: false, default: false })
published?: boolean = false;
}
产品服务
import { Injectable } from '@nestjs/common';
import { CreateArticleDto } from 'src/articles/dto/create-article.dto';
import { PrismaService } from 'src/prisma/prisma.service';
import { CreateProductDto } from './dto/create-product.dto';
@Injectable()
export class ProductService {
constructor(private prisma: PrismaService) { }
create(createProductDto: CreateProductDto) {
return this.prisma.product.create({ data: createProductDto });
}
}
已经尝试了四次来生成新资源,但还是一样,重新启动电脑,服务仍然没有变化
{
"name": "Amazing Product",
"description": "This is a fantastic product you'll love!",
"price": 10000,
"image": "https://example.com/product-image.jpg",
"categoryId": "1"
}
但是当我使用
@Body() createProductDto: any
时,请求可用
当我提交数据时,我收到错误
10 create(createProductDto: CreateProductDto) {
→ 11 return this.prisma.product.create({
data: {
+ name: String
}
})
Argument `name` is missing.
因为正文请求始终是
{}
添加
class-validator
有助于检查您的数据并避免请求中出现意外的空白。
这确实可以帮助解决您面临的问题。如果您的数据不符合预期格式,您会直接收到通知,以便您可以快速查看需要纠正的地方。