类型“对象”必须具有返回迭代器的“ [Symbol.iterator]()”方法。ts(2488)

时间:2020-07-17 17:20:56

标签: typescript ionic-framework

我的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时,我遇到了这个错误: 类型“对象”必须具有“ Symbol.iterator”方法,该方法返回iterator.ts(2488)

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

1 个答案:

答案 0 :(得分:0)

'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