nestjs - Nest.js 和 Restful CRUD,为什么不发这个?
问题描述
我有一个 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;
}
解决方案
有几个问题,其中一些我最终在上面的编辑中修复。但是,主要问题是我需要这样的标题信息。虽然我将这些用于其他后端,但 Nestjs 似乎不需要它们。错误观念。这是我的 Angular http.service 设置。
private headers = new HttpHeaders()
.set('content-type', 'application/json')
.set('observe', 'response');
public addRecord(dbTable: string, recordData): Observable<any> {
return this.http
.post(`${this.api}${dbTable}`, recordData, {headers: this.headers});
}
我还想指出,Nestjs 的许多实现都使用 dto 类型作为数据参数,因此在 Nestjs 控制器中使用 recordData: AddMemberDto。我删除了它,它工作正常。
推荐阅读
- java - IRC 自动响应机器人没有响应
- r - 将数据框转换为维恩图表
- html - 链接应该下降,而不是正确
- api - 如何在 JMeter 中对更新端点进行性能测试,同时自动更新有效负载中的行值
- java - Java 可执行文件安装后会随机变慢
- mysql - Spring Boot & Hibernate:带有本地 h2 和 Flyway 的 MySQL TEXT
- amazon-cognito - 使用 JWT 管理 Cognito 用户池
- webpack - 如何在构建时不验证文件内容
- azure-devops - 如何将 Microsoft 团队的频道与 azure devops 中的工作项连接起来
- javascript - 显示某些事件,但某些事件不在 FullCalendar 中