为什么我的http post方法只保存项目id而忽略其他属性?

问题描述 投票:0回答:1

我想用http POST方法在数据库中保存数据,但它只保存了我的JSON的ID,而忽略了其他属性。

我的组件。

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 });
  }
}

Console return:

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

生成的JSON:[{ "id": 1 }] 。

本以为会保存名称、数量和描述,但只出现了id。

json angular http
1个回答
0
投票

你不应该 stringify 的对象。这将导致头部被 text/plain. 可能需要 application/json 以便能够存储。把你的职位改成。

return this.http.post('http://localhost:3000/itens', item, { headers: this.headers });
© www.soinside.com 2019 - 2024. All rights reserved.