Ionic приложение не добавляет элементы в базу данных через API - PullRequest
0 голосов
/ 04 октября 2019

Я создаю ионное приложение, которое позволяет проверять оборудование для таблиц "checkequipment", в котором хранятся идентификатор транспортного средства, дата checkID (первичный ключ) и "checkEquipmentLine": где хранится оборудование, statusid и checkequipmentID, все выполнено. через mvc asp.net api

Размещение чекового оборудования работает нормально, но добавление линий чекового оборудования не работает вообще, несмотря на то, что я пропускаю правильные значения. Я получаю сообщение об ошибке

HttpErrorResponse {headers: HttpHeaders, status: 409, statusText: "OK", url: "https://localhost:44365/api/CheckEquipmentLine", ok: false,…}

ошибка: null

заголовки: HttpHeaders {normalizedNames: Map (0), lazyUpdate: null, lazyInit: ƒ}

сообщение: «Реакция отказа Http для https://localhost:44365/api/CheckEquipmentLine: 409 OK»

name: "HttpErrorResponse"

ok: false

status: 409

statusText: "OK"

url: "https://localhost:44365/api/CheckEquipmentLine"

proto : HttpResponseBase

Push-код в сервисе API

 AddCheckEquipment(VID) { //Fully works

    let postData = {
            "DateChecked": this.today.toISOString().substring(0, 10),
            "VehicleID": VID
    }
    this.http.post(this.apiUrl+"/CheckEquipment", postData,{
      headers: { 'Content-Type': 'application/json',
      'Accept': 'application/json',
      'Access-Control-Allow-Methods': 'Post'
    }}).subscribe(data => {
      console.log(data['_body']);
     }, error => {
      console.log(error);
    });
  }

  AddCheckEquipmentLine(SID,EID, CEQ) { //not working
    let postData = {
            "EquipmentID": EID,
            "CheckEquipmetStatusID": CEQ,
            "CheckEqupmentID": SID
    }
    console.log("Equipment ID: " +postData.EquipmentID + " Status id:  " + postData.CheckEquipmetStatusID + " Check Equipment ID " + postData.CheckEqupmentID); // is correct
    this.http.post(this.apiUrl+"/CheckEquipmentLine", postData,{
      headers: { 'Content-Type': 'application/json',
      'Accept': 'application/json',
      'Access-Control-Allow-Methods': 'Post'
    }}).subscribe(data => {
      console.log(data['_body']);
     }, error => {
      console.log(error);
    });
  }

код на странице ts

 async CompleteCheck(){
    if(!this.Registration){
      this.noCar = "Please choose a car to do the service for";
    }else{
          this.api.AddCheckEquipment(this.Registration);
          console.log("Check Equipment made");
           this.api.getLastEquipmentCheckForCar(this.Registration).toPromise().then(response => {
             this.SID = response;
             this.SID = this.SID.CheckEquipmentID;
             console.log(this.SID);
             this.statuslist.forEach(element => {
              console.log(element.id + " Status ID: " + element.statusID);
              this.api.AddCheckEquipmentLine(this.Registration, element.id, element.statusID);
            })
          });
    }
  }

код в API

public IHttpActionResult PostCheckEquipmentLine(CheckEquipmentLine checkEquipmentLine)
        {
            db.Configuration.ProxyCreationEnabled = false;
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            db.CheckEquipmentLines.Add(checkEquipmentLine);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                if (CheckEquipmentLineExists(checkEquipmentLine.EquipmentID))
                {
                    return Conflict();
                }
                else
                {
                    throw;
                }
            }

Я включил сервисный код для addcheckequipment, который работает нормально и должен идти первым, так как это родительская таблица, но я не уверенпочему линия проверки оборудования

...