javascript FormData在POST方法中不工作(Angular 14和嵌套js)

8aqjt8rx  于 2023-01-11  发布在  Java
关注(0)|答案(2)|浏览(95)

我正在使用Angular、Nest Js和MongoDB创建一个CRUD服务。
当我将FormData从Angular(前端)发送到Nest Js(后端)时,但FormData为空。

为什么FormData不发送任何数据?

  • 〉〉〉图像Angular 控制台〈〈〈*

第一节第一节第一节第一节第一次

  • 〉〉〉图像嵌套J控制台〈〈〈*

〉〉〉角锉
项目服务ts

interface Form {
  nameForm:string;
  detailForm:string
}

@Injectable({
  providedIn: 'root'
})

export class ProjectService {

  REST_API:string = 'http://localhost:3000/api';

  constructor(private http:HttpClient) { }

  createProject(projectForm:Form){
    const projectData = new FormData();
    projectData.append('name',projectForm.nameForm)
    projectData.append('detail',projectForm.detailForm)
    
    // FormData has name and detail data.
    projectData.forEach((value,key) => {
      console.log(key+" "+value)
    });
    
    let API_URL = `${this.REST_API}/projects`

    this.http.post(API_URL,projectData).subscribe()
  }
}

〉〉〉嵌套js文件
项目.控制器.ts

@Controller('projects')
export class ProjectsController {
  constructor(private readonly projectsService: ProjectsService) {}

  @Post()
  create(@Body() createProjectDto: CreateProjectDto) {
    console.log('in controller',createProjectDto)
    return this.projectsService.create(createProjectDto);
  }
}

创建项目.日期到.ts

export class CreateProjectDto {
    name:string;
    detail:string
}

项目服务ts

@Injectable()
export class ProjectsService {
  constructor(@InjectModel(Project.name) private projectModel:Model<ProjectDocument>) {}

  create(createProjectDto: CreateProjectDto) {
    const createdProject = new this.projectModel(createProjectDto)
    return createdProject.save()
    
  }
}
mlmc2os5

mlmc2os51#

如果必须传递formData对象,可以使用nestjs-form-data模块,更方便的解决方案是传递json对象

unftdfkk

unftdfkk2#

@UseInterceptors(AnyFilesInterceptor())

在上载请求nestjs上使用此

相关问题