Почему мой метод http post сохраняет только идентификатор элемента и игнорирует другие атрибуты? - PullRequest
1 голос
/ 04 мая 2020

Я пытаюсь сохранить данные в базе данных с помощью HTTP POST, но он сохраняет только идентификатор моего JSON и игнорирует другие атрибуты.

My Component:

import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { Item } from 'src/app/models/item';
import { InserirItensService } from 'src/app/services/inserir-itens.service';

@Component({
  selector: 'app-inserir-itens',
  templateUrl: './inserir-itens.component.html',
  styleUrls: ['./inserir-itens.component.css']
})
export class InserirItensComponent implements OnInit {

  constructor(
    private formBuilder: FormBuilder,
    private inserirItensService: InserirItensService,
    ) { }

    myForm: FormGroup;
    item: Item;

  ngOnInit() {
    this.myForm = this.formBuilder.group({
      name: [null, Validators.required],
      quantity: [null, Validators.required],
      description: [null],
    });
  }
  save() {
    if (this.myForm.valid) {
      this.item = this.myForm.value;
      this.inserirItensService.insertItem(this.item).subscribe(res => console.log(res));
    }
  }
}

Моя служба:

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class InserirItensService {
  headers: HttpHeaders;

constructor(private http: HttpClient) {
  this.headers = new HttpHeaders();
  this.headers.append('Content-Type', 'application/json');
}

insertItem(item: Item): Observable<any> {

 const itemJSON = JSON.stringify(item);
 console.log(itemJSON);
 return this.http.post('http://localhost:3000/itens', itemJSON, { headers: this.headers });
  }
}

Консольный возврат:

{"name":"box","quantity":1,"description":"box desc."}
{id: 8}

Сгенерированный JSON: [{"id": 1}]

Это было ожидается сохранение имени, количества и описания, но отображается только идентификатор.

1 Ответ

0 голосов
/ 04 мая 2020

Не стоит stringify объект. Это приведет к тому, что заголовок будет text/plain. Вероятно, он должен быть application/json, чтобы его можно было сохранить. Измените свой пост на:

return this.http.post('http://localhost:3000/itens', item, { headers: this.headers });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...