Nest.js и Restful CRUD, почему не эта публикация? - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть служба Angular, которая успешно размещена в Firebase и Postgres через промежуточное ПО PHP под названием DreamFactory.Приложение Angular работает.Проблема в контроллере Nestjs @Post () или службе add () ниже.Я хочу опубликовать объект json с именем recordData.Я получаю пустой объект вместо моих данных JSON, что правильно в службе Angular.Результаты сервера console.log:

recordData in controller:  {}
req:  {}
recordData in service:  {}

Прокси-сервер Angular CORS работает в терминале Angular Dev:

[HPM] POST /api/members -> http://localhost:3000

Angular использует порт сервера dev 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.@ Получите работает, @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;
  }

1 Ответ

0 голосов
/ 26 апреля 2018

Было несколько проблем, некоторые из которых я в конечном итоге исправил в приведенных выше изменениях.Однако основная проблема заключалась в том, что мне нужна была информация заголовка как таковая.В то время как у меня было это для других бэкэндов, они, кажется, не требовались для Нестей.Неправильная идеяЭто моя настройка 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 для параметра данных, поэтому recordData: AddMemberDto в контроллере Nestjs.Я удалил его, и он отлично работает.

...