Ir para conteúdo


Foto

Model com objeto JSON com referências aninhadas


  • Por favor, faça o login para responder
2 respostas neste tópico

#1 LMBelo

LMBelo

    Member Avançado

  • Membros
  • PipPipPip
  • 47 posts

Postado 16 June 2015 - 18:12

Estou com um problema a algum tempo e não consigo descobrir como resolver. 

 

O objeto JSON que estou recebendo do servidor possui outros objetos aninhados, nesse formato:

{
    "type": "Sistema.Comum.ValueObjects.Posto.TPosto",
    "id": 3,
    "fields": {
        "FID": 1,
        "FPosto": "teste",
        "FTelefone": "12312312",
        "FContato": "Maria",
        "FEMail": "",
        "FComercial": true,
        "FVistoria": true,
        "FCobranca": true,
        "FObs": "",
        "FAtivo": true,
        "FEmpresa": {
            "type": "Sistema.Comum.ValueObjects.Empresa.TEmpresa",
            "id": 4,
            "fields": {
                "FID": 2,
                "FRazaoSocial": "Empresa de teste",
                "FNomeFantasia": "Empresa de teste",
                "FCNPJ": "123123123",
                "FIE": "",
                "FIM": "",
                "FCNAE": null,
                "FContato": "",
                "FObs": "",
                "FAtivo": true
            }
        },
        "FEndereco": {
            "type": "Sistema.Comum.ValueObjects.Endereco.TEndereco",
            "id": 5,
            "fields": {
                "FID": 1,
                "FCEP": "1213212",
                "FTipoLogradouro": "rua",
                "FLogradouro": "teste",
                "FNumero": "10",
                "FComplemento": "",
                "FBairro": "teste",
                "FCidade": "bh",
                "FEstado": "mg"
            }
        }
    }
}

Quando o objeto é recebido, é criado a model Posto, porém não cria as models para os relacionamentos. 

 

O objeto "Endereço" é uma entidade, porém ele não é criado por uma store própria, ele é enviado junto ao objeto "Posto" e no servidor ele é cadastrado como uma entidade separada(relacionamento 1:1).

 

Declaração das models:

Ext.define('SISTEMA.model.Endereco', {    extend     : 'SISTEMA.model.Base',
    idProperty : 'FID',
    remoteType: 'SISTEMA.Comum.ValueObjects.Endereco.TEndereco',
    fields     : [
        { name: 'FID', type: 'int' },
        'FCEP',
        'FTipoLogradouro',
        'FLogradouro',
        { name: 'FNumero', type: 'int' },
        'FComplemento',
        'FBairro',
        'FCidade',   
        'FEstado'
    ]
});


Ext.define('SISTEMA.model.Posto', {
    extend     : 'SISTEMA.model.Base',
    requires: [
        'SISTEMA.model.Empresa',
        'SISTEMA.model.Endereco'  
    ],
    idProperty : 'FID',
    remoteType : 'SISTEMA.Comum.ValueObjects.Posto.TPosto',
    fields     : [
        { name: 'FID', type: 'int' },
        'FPosto',
        'FTelefone',
        'FContato',
        'FEMail',
        'FComercial',
        'FVistoria',
        'FCobranca',
        'FObs',
        { name: 'FAtivo', defaultValue: true },
        {
            name: 'FEmpresa', reference: 'SISTEMA.model.Empresa'
        },
        {
            name: 'FEndereco', reference: 'SISTEMA.model.Endereco'
        }
    ]
});

Representação do objeto ao carregar na view:

 
Arquivo anexado  model.png   67.43K   0 Downloads
 
Repare que os objetos aninhados continuam no formato JSON. Não deveriam ter sido convertidos para a model?
 

Editado por Legolas, 17 June 2015 - 07:34.
Informações de código no formato inválido


#2 alvarobrg

alvarobrg

    Novato

  • Membros
  • PipPip
  • 13 posts

Postado 18 June 2015 - 15:47

No mapeamento da FEempresa e FEndereco você não deveria incluir as configurações para 'role' e 'associationKey' ?

Exemplo: { name: 'FEmpresa', reference: 'SISTEMA.model.Empresa', role:'FEmpresa', associationKey: 'FEmpresa'  }

 

Nos dados recebidos da associação, por que precisar das informações dentro de um objeto "fields": {" ??

 

[ ]



#3 LMBelo

LMBelo

    Member Avançado

  • Membros
  • PipPipPip
  • 47 posts

Postado 18 June 2015 - 17:29

No mapeamento da FEempresa e FEndereco você não deveria incluir as configurações para 'role' e 'associationKey' ?

Exemplo: { name: 'FEmpresa', reference: 'SISTEMA.model.Empresa', role:'FEmpresa', associationKey: 'FEmpresa'  }

 

Nos dados recebidos da associação, por que precisar das informações dentro de um objeto "fields": {" ??

 

[ ]

 

Vou testar com essas propriedades que você falou.

Sobre o campo fields, esse é o formato que o servidor retorna.






0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos