我有一个 Angular 服务,它已通过名为 DreamFactory 的 PHP 中间件成功发布到 Firebase 和 Postgres。Angular 应用程序有效。问题出在下面的 Nestjs 控制器 @Post() 或服务 add() 中。我想发布一个名为 recordData 的 json 对象。我得到一个空对象而不是我的 json 数据,这在 Angular 服务中是正确的。服务器 console.log 结果:
recordData in controller: {}
req: {}
recordData in service: {}
Angular CORS 代理服务器在 Angular 开发终端中工作:
[HPM] POST /api/members -> http://localhost:3000
Angular 使用开发服务器端口 4200,Nestjs 使用 3000。典型的开发设置。
怎么了?有效载荷没有到达控制器。我是服务器编码的新手。
角http.service.ts:
private api = '/api/';
...
public addRecord(dbTable: string, recordData): Observable<any> {
return this.http
.post(`${this.api}${dbTable}`, recordData);
// For this example I'm posting to localhost:3000/api/members db table.
}
我的成员 Nest 控制器。@Get 有效,@Post 无效。
@Controller('api/members') // /members route
export class MembersController {
constructor(private readonly membersService: MembersService) {}
@Get()
async findAll(): Promise<Members[]> {
return await this.membersService.findAll();
}
@Post()
async addItem(@Req() req, @Body() recordData: AddMemberDto) {
console.log('recordData in controller: ', recordData);
console.log('req: ', req.body);
const result: Members = await this.membersService.addItem(recordData);
if (!result)
throw new HttpException('Error adding new Member', HttpStatus.BAD_REQUEST);
return result;
}