【问题标题】:devextreme-datagrid update: message: "Http failure response for (unknown url): 0 Unknown Error"devextreme-datagrid 更新:消息:“(未知 url)的 Http 失败响应:0 未知错误”
【发布时间】:2019-02-18 19:31:35
【问题描述】:

我在更新 devextreme-datagrid 时遇到问题。 你能帮忙吗?

lineController.js

 router.put("/:id", (req, res) => {
      if (!ObjectId.isValid(req.params.id))
        return res.status(400).send(`No record with given id : ${req.params.id}`);
      console.log({
        msg: "Line guncelleme işlemi",
        gelenveri: req.body
      });
      var emp = {
        bant: req.body.bant,
        tarih: req.body.tarih,
        isKazasi: req.body.isKazasi,
        ramakKala: req.body.ramakKala,
        tamirAdedi: req.body.tamirAdedi,
        ikinciKaliteAdedi: req.body.ikinciKaliteAdedi,
        sevkiyattanGelenHata: req.body.sevkiyattanGelenHata,
        diger: req.body.diger,
        koliCikisAdedi: req.body.koliCikisAdedi,
        planlananAdet: req.body.planlananAdet,
        sam: req.body.sam,
        calisilanToplamSure: req.body.calisilanToplamSure,
        bantKisiSayisi: req.body.bantKisiSayisi,
        ilaveCalisilanDk: req.body.ilaveCalisilanDk,
        iseGelmeyenlerinToplamSuresi: req.body.iseGelmeyenlerinToplamSuresi,
        hataOrani:
          ((req.body.tamirAdedi +
            req.body.ikinciKaliteAdedi +
            req.body.sevkiyattanGelenHata +
            req.body.diger) /
            (req.body.koliCikisAdedi + req.body.ikinciKaliteAdedi)) *
          100,
        ikinciKaliteOrani:
          (req.body.ikinciKaliteAdedi /
            (req.body.koliCikisAdedi + req.body.ikinciKaliteAdedi)) *
          100,
        planlamayaUyum: (req.body.koliCikisAdedi / req.body.planlananAdet) * 100,
        hatVerimliligi:
          (req.body.koliCikisAdedi * req.body.sam) /
          (req.body.calisilanToplamSure * req.body.bantKisiSayisi),
        ilaveCalisma: (req.body.ilaveCalisilanDk * req.body.bantKisiSayisi) / 60,
        devamsizlikYuzdesi:
          (req.body.iseGelmeyenlerinToplamSuresi / (req.body.bantKisiSayisi * 9)) * 100
      };
      Line.findByIdAndUpdate(
        req.params.id,
        { $set: emp },
        { new: true },
        (err, doc) => {
          if (!err) {
            res.send(doc);
          } else {
            console.log(
              "satır güncelleme hatası:" + JSON.stringify(err, undefined, 2)
            );
          }
        }
      );
    });

line.service.ts

import { Injectable } from '@angular/core';
import {HttpClient} from '@angular/common/http';

import {Line} from './line.model';
@Injectable({
  providedIn: 'root'
})
export class LineService {
  selectedLine: Line;
  lines: Line[];
  readonly baseURL = 'http://localhost:3000/lines';


  constructor(private http: HttpClient) { }


  postLine(emp: Line) {
    return this.http.post(this.baseURL, emp);
  }

  getLineList() {
    return this.http.get(this.baseURL);
  }

  // putLine(id, emp: Line) {
  //   return this.http.put(this.baseURL + `/${id}`, emp);
  // }
  putLine(emp: Line) {
    return this.http.put(this.baseURL + `/${emp._id}`, emp);
  }

  deleteLine(_id: string) {
    return this.http.delete(this.baseURL + `/${_id}`);
  }
}

line.component.html

<dx-data-grid
          id="gridContainer"
          [dataSource]="lineService.lines"
          title="SQDCM Veri Gİrişi"
          keyExpr="_id"
          [columnAutoWidth]="true"
          [showBorders]="true"
          (onRowInserted)="onEdit($event)"
          (onRowUpdated)="onUpdate($event)"
          (onRowRemoved)="onDelete($event)"
        > 

line.component.ts

onUpdate(event) {
  console.log(event);
  const merged = {_id: event.key, ...event.data};
   this.lineService.putLine(merged).subscribe(res => { });
}

当我更新数据时,它会将其写入控制台。

{key:“5c6ac45adb48bf3850eebc74”,数据:{…},组件:继承者, 元素: dx-data-grıd#gridContainer.dx-widget.dx-visibility-change-handler} 组件:继承者{_events:{…},_eventsStrategy:NgEventsStrategy, callBase:未定义,_$element:initRender(1),名称:“dxDataGrid”,...} 数据:isKazasi:8 proto:对象元素:dx-data-grıd#gridContainer.dx-widget.dx-visibility-change-handler 键: “5c6ac45adb48bf3850eebc74” 原型:对象

并给出错误:

{ msg: 'Line guncelleme işlemi', gelenveri: { _id: '5c6ac45adb48bf3850eebc74', isKazasi: 8 } } satır günelleme hatası:{ "message": "路径中值 \"NaN\" 的数字转换失败 \"devamsizlikYuzdesi\"", "name": "CastError", "stringValue": "\"NaN\"", "kind": "number", "value": null, "path": “devamsizlikYuzdesi”}

【问题讨论】:

    标签: angular typescript datagrid devexpress devextreme


    【解决方案1】:

    报错说devamsizlikYuzdesi的计算有问题,下面这行

    devamsizlikYuzdesi:(req.body.iseGelmeyenlerinToplamSuresi / (req.body.bantKisiSayisi * 9)) * 100 
    

    我认为以下一个/两个属性是/未定义

    iseGelmeyenlerinToplamSuresibantKisiSayisi.

    我相信检查那些未定义的值并向这些属性添加默认值 (0) 应该可以解决您的问题。

    在 var emp = {...之前添加以下内容...

    if(req.body.iseGelmeyenlerinToplamSuresi == undefined){
        req.body.iseGelmeyenlerinToplamSuresi = 0;
    }
    
    if(req.body.bantKisiSayisi == undefined){
        req.body.bantKisiSayisi = 0;
    }
    

    【讨论】:

    • 这两个数据都在数据库和打字稿字段中定义。找不到错误。
    • undefined 我的意思是它们的值是 undefined / null
    • 如果我从更新函数中删除计算操作。?
    • 您可以通过将 (req.body.iseGelmeyenlerinToplamSuresi / (req.body.bantKisiSayisi * 9)) * 100 替换为 0(零)来简单地测试它
    • 我是编程新手。我不明白你:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 2018-11-29
    • 2022-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多