Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Execução do return

Boa noite!

Alguem poderia me ajudar com esse codigo:

return this._http
            .post(api2,params)

            .map(res => res.json().Usuario)
            .toPromise()
            .then(dado => {
                let usuario = new Usuario(dado.usu_id, dado.usu_token);
                this._usuarioLogado = usuario;

                let lojas = new Lojas(dado.loja_id, dado.loja_nome);
                this._usuarioLoja = lojas;

                let mensagem = new Mensagem(dado.codMensagem,dado.descMensagem);
                this._usuarioMensagem = mensagem;

                console.log(usuario);
                console.log(lojas);
                console.log(mensagem);
                return Usuario;

Eu preciso que o Return execute a proxima variavel sempre é quando nao tiver encerrar. fazer um loop na verdade.

Se tiver outra solução mais util, vai me ajudar tbm.

da forma que esta no codigo, eu so consigo executar uma por vez e preciso setar ela no return, como por exemplo:

Se eu quiser executar a variavel Mensagem eu preciso alterar o trecho:

.map(res => res.json().Mensagem)

e no return:

return Mensagem;

e aqui eu preciso executar todas.

3 respostas

por que você não retorna um array de objetos e do outro lado você pode tratá-lo pegando por o index. assim:

       return {usuario, lojas, mensagem};

//do outro lado você pega o retorno pelo index ex:

retornoDoMetodo[0]   /// usuario
retornoDoMetodo[1]   ///loja
retornoDoMetodo[2]  /// mensagem

Consegui resolver uma parte.

Porem estou parado no seguinte.

nesse trecho:

 return this._http
            .post(api2,params)

            .map(res => res.json())
            .toPromise()
            .then(dado => {
                let usuario = new Usuario(dado.Usuario.usu_id, dado.Usuario.usu_token);
                this._usuarioLogado = usuario;

Eu pego do json o "Usuario":

Usuario {usu_id: 55, usu_token: "055c0864b0dcd9b7ee4268a2e160e152"}
usu_id
:
55
usu_token
:
"055c0864b0dcd9b7ee4268a2e160e152"

Nesse outro trecho:

let lojas = new Lojas();
                this._usuarioLoja = lojas;

Eu preciso que ele me retorn o JSON com um array de objetos.

segue Json convertido em JSON.stringfy:

{"Mensagem":{"codMensagem":"000","descMensagem":"Login ok"},"Usuario":{"usu_id":55,"usu_token":"055c0864b0dcd9b7ee4268a2e160e152"},"Lojas":[{"loja_id":2735,"loja_nome":"ALDEOTA"},{"loja_id":2736,"loja_nome":"BENFICA"},{"loja_id":2737,"loja_nome":"DEL PASEO"},{"loja_id":2738,"loja_nome":"IGUATEMI"},{"loja_id":2739,"loja_nome":"MAHOGANY ALDEOTA"},{"loja_id":2740,"loja_nome":"MAHOGANY PÁTIO"},{"loja_id":2741,"loja_nome":"MIDWAY"},{"loja_id":2742,"loja_nome":"NATAL SHOPPING"},{"loja_id":2743,"loja_nome":"PATIO DOM LUIS"},{"loja_id":2744,"loja_nome":"RIOMAR FORTALEZA"},{"loja_id":2745,"loja_nome":"RIOMAR PK"},{"loja_id":2746,"loja_nome":"RIOMAR RECIFE"}]}

ai eu preciso pegar tudo de "Lojas[]", conforme o json acima.

No meu Usuario.ts esta:

export class Usuario {

        constructor(
            public usu_id: string, 
            public usu_token: string 

            ) {}

    }
    export class Lojas {

        Lojas =[{}];




            constructor(


                ) {}
        }

Codigo do service:

return this._http
            .post(api2,params)

            .map(res => res.json())
            .toPromise()
            .then(dado => {
                let usuario = new Usuario(dado.Usuario.usu_id, dado.Usuario.usu_token);
                this._usuarioLogado = usuario;

                let lojas = new Lojas();
                this._usuarioLoja = lojas;
                console.log(JSON.stringify(dado));



                let mensagem = new Mensagem(dado.Mensagem.codMensagem,dado.Mensagem.descMensagem);
                this._usuarioMensagem = mensagem;

                console.log(usuario);
                console.log(lojas);
                console.log(mensagem);
                return Usuario;


    });
 }

 obtemDadosUsuario(){
     return this._usuarioLogado;
 }
 obtemDadosLojas(){
    return this._usuarioLoja;
 }
solução!

Galera consegui resolver...

Eu tava errando na criação do objeto.

agora eu fiz assim:

export class Lojas {






            constructor(
                public Lojas ={
                    "Lojas":[
                        {

                        }
                    ]
                }


                ) {}

E no service ficou:


                let lojas = new Lojas (dado.Lojas);
                this._usuarioLoja = lojas;
                console.log(JSON.stringify(dado));



                let mensagem = new Mensagem(dado.Mensagem.codMensagem,dado.Mensagem.descMensagem);
                this._usuarioMensagem = mensagem;

                console.log(usuario);
                console.log(lojas);
                console.log(mensagem);
                return Usuario;


    });