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

Passando multiplas variaveis a views

Gostaria de saber a possibilicade da passagem de multiplas variaveis para uma view, ultizando o res.render em diferente funçoes, um exemplo

app.get('/',  function(req,res){

//DAO de exemplo, imagine ela declarada.

//Aqui estou enviando uma variavel para a view index.ejs

ExemploDAO.getID(function(err, result){
res.render('index',{ex: resulti});
});

//Meu objetivo seria enviar variaveis ou objetos de outra funçao para a mesma view.

Exemplo2DAO.getID(function(err,result){
res.render('index', {ex2:result});
});
};

Essa foi uma forma que pensei em fazer mas nao consegui, nesse caso a 1 variavel nao e enviada, ja que o index e renderizado novamente.

Gostaria de uma dica para soluçao!

Grato. ATT. Jonathan Taquita

6 respostas

OI Jonathan, tudo bem? Lembre-se que esse objeto que você manda pra view, não precisa ter apenas um valor, caso precise de mais, você pode simplesmente adicionar mais uma chave no objeto e você terá o valor disponível. Assim:

res.render( 'index', { var1: valor1, var2: valor2} );

Pegou a ideia?

Wanderson entendi, mas quando se trata de funçoes separadas, ja que cada funçao gera um 'result' tem como guardar o result dessa funçao em uma variavel para tentar passar no final do app.get com o res.render?

Uma de minhas tentativas, ainda estou analisando.

response.render('index',{
    id1 : exemploone.x(function (err, result){
        response.send(result);
    })
    id2 : exemplotwo.y(function(err.result){
        response.send(result);
    })

outra possibilidade a qual imaginei foi essa, deu certo, mas nao me parece ser uma boa pratica.

ex1.getID1(function(err, result){
    var ID = result[0].ID;
    ex2.getID2(function(err, result){
        var ID2 = result[0].ID;
        response.render('caixa',{
            IDex1: ID,
            IDex2: ID2
        })
    })
})
solução!

Oi Jonathan, deixa eu ver se entendi, são rotas aninhadas é isso? Só toma cuidado com assincronia do node. Batendo o olho no seu primeiro código, acho que ele não funciona não, você está dando um render e depois usando o send já na view. ou seja, enviando a resposta, em uma resposta.

Considerando o exemplo, o segundo código me parece fazer mais sentido. E esse tipo de código é mais comum do que parece, porém, você pode desacoplar um pouco se fizer sentido, remover uma função de dentro da outra.

okay Wabderson, obrigado ;).