首页 > 解决方案 > 类型 'object' 必须有一个返回 iterator.ts(2488) 的 '[Symbol.iterator]()' 方法

问题描述

我的 sql 查询结果如下:

{
    "statusCode": 200,
    "success": true,
    "messages": [
        null
    ],
    "data": {
        "vistoria": {
            "vistoria": {
                "id": 1,
                "usuario_id": 1,
                "empresa_id": 4,
                "vistoria_tipo_id": 1,
                "veiculo_id": 3,
                "cliente_id": 5,
                "data": "17/07/2020 11:14"
            },
            "questionario": {
                "id": 1,
                "usuario_id": 1,
                "empresa_id": 4,
                "vistoria_id": 1,
                "odometro": 123124,
                "pertences_retirados": "S",
                "nivel_combustivel": "4",
                "campo_generico": {
                    "gen_antena": "OK",
                    "gen_calota": "NOK",
                    "gen_capota_maritima": "Q",
                    "gen_cartao_code": "NA"
                },
                "campo_pneu_cond": {
                    "pcd_pneu_de_cond": "NOVO",
                    "pcd_pneu_dd_cond": "BOM",
                    "pcd_pneu_te_cond": "BOM",
                    "pcd_pneu_td_cond": "NOVO"
                },
                "campo_pneu_marca": {
                    "pmc_pneu_de_marca_id": 27,
                    "pmc_pneu_dd_marca_id": 37,
                    "pmc_pneu_te_marca_id": 9999,
                    "pmc_pneu_td_marca_id": 9999
                },
                "campo_pneu_outros": {
                    "pot_pneu_te_marca_outros": "asdasdasd",
                    "pot_pneu_td_marca_outros": "asdasdasdddd"
                }
            },
            "vistoria_tipo": "ENTREGA",
            "veiculo_placa": "ASD1234",
            "veiculo_modelo": "Palio",
            "cliente_cpf": 12312312312,
            "cliente_nome": "Paulo"
        },
        "num_imagens": 3,
        "imagens": [
            {
                "id": 1,
                "usuario_id": 1,
                "empresa_id": 4,
                "vistoria_id": 1,
                "imagemRef": "assinaturaVistoriador",
                "imagemUrl": "http://192.168.15.2/vistoria/preview/2020/07/4/1/png/rsz_0b967ef2e9bf2e603c72859c9fcf7d6d"
            },
            {
                "id": 2,
                "usuario_id": 1,
                "empresa_id": 4,
                "vistoria_id": 1,
                "imagemRef": "Frente",
                "imagemUrl": "http://192.168.15.2/vistoria/preview/2020/07/4/1/jpeg/rsz_ddb36b2719c88118cc5ee0d16c868534"
            },
            {
                "id": 3,
                "usuario_id": 1,
                "empresa_id": 4,
                "vistoria_id": 1,
                "imagemRef": "assinaturaCliente",
                "imagemUrl": "http://192.168.15.2/vistoria/preview/2020/07/4/1/png/rsz_95d414ee5fae24371a506f823196af86"
            }
        ]
    }
}

我写了一个这样的界面:

export interface VistoriaInt {
  success: boolean;
  messages?: [''];
  data?: {
    vistoria: {
      vistoria: {
        id: number;
        usuario_id: number;
        empresa_id: number;
        vistoria_tipo_id: number;
        veiculo_id: number;
        cliente_id: number;
        data: Date;
      };
      questionario: {
        id: number;
        usuario_id: number;
        empresa_id: number;
        vistoria_id: number;
        odometro: number;
        pertences_retirados: string;
        nivel_combustivel: string;
        campo_generico: object;
        campo_pneu_cond: object;
        campo_pneu_marca: object;
        campo_pneu_outros: object;
      };
      vistoria_tipo: string;
      veiculo_placa: string;
      veiculo_modelo: string;
      cliente_cpf: number;
      cliente_nome: string;
    };
    num_imagens: number;
    imagens: [
      {
        id: number;
        usuario_id: number;
        empresa_id: number;
        vistoria_id: number;
        imagemRef: string;
        imagemUrl: string;
      }
    ]
  };
}

但是当我尝试在“campo_generico”上做一个 lop 时,我遇到了这个错误:类型“object”必须有一个返回 iterator.ts(2488) 的“Symbol.iterator”方法

我该如何解决这个问题,我可以使用接口从我的 sql 数据库中检索这些数据吗?

标签: typescriptionic-framework

解决方案


'campo_generico' 是一个对象,而不是一个数组。因此,您需要在该属性上使用 Object.values(),然后在结果数组上使用该循环 https://developer.mozilla.org/uk/docs/Web/JavaScript/Reference/Global_Objects/Object/values

或者您可以尝试“for...in”循环https://developer.mozilla.org/uk/docs/Web/JavaScript/Reference/Statements/for...in


推荐阅读