Open GlauberF opened 7 years ago
Está inacessível pois vc tem uma Promise sendo executada com then/catch
dentro do if
:
.then((endId) => {
knex.select('endcli_id', 'fk_cli_id', 'endcli_logradouro', 'endcli_numero', 'endcli_complemento',
'endcli_cep', 'endcli_bairro', 'endcli_pais', 'endcli_cidade', 'endcli_estado',
'endcli_latitude', 'endcli_longitude')
.from('tb_Endereco_Cliente')
.where({ endcli_id: endId['0'] })
.then((end) => {
respSuccess.endereco = end;
//res.json({ data: respSuccess });
})
})
Entenda que os valores que você recebe dentro do insert
só existem dentro do seu then
e os dados que vc recebe do select
só existem no segundo then
.
A melhor forma de trabalhar com Promises é encadeando-as, por exemplo:
const doSelect = (endId) =>
knex.select('endcli_id', 'fk_cli_id', 'endcli_logradouro', 'endcli_numero', 'endcli_complemento',
'endcli_cep', 'endcli_bairro', 'endcli_pais', 'endcli_cidade', 'endcli_estado',
'endcli_latitude', 'endcli_longitude')
.from('tb_Endereco_Cliente')
.where({ endcli_id: endId['0'] })
.then((end) => {
respSuccess.pessoas = d; // nao sei de onde vem
respSuccess.endereco = end;
res.json({ data: respSuccess });
})
// tb endereço
if (objEndereco.endcli_logradouro || objEndereco.endcli_cep || objEndereco.endcli_bairro ||
objEndereco.endcli_pais || objEndereco.endcli_cidade || objEndereco.endcli_estado ||
objEndereco.endcli_numero || objEndereco.endcli_complemento) {
knex('tb_Endereco_Cliente')
.insert(objEndereco)
.then( doSelect )
.catch((err) => {
return res
.status(500)
.json({
code: 500,
data: {}
});
});
}
Não separei o callback do segundo then
para não lhe complicar, teste aí!
Scope node.js como resolver:
Estou com problema em relação ao scope de node.js e gostaria de uma ajuda para resolver. tenho vários if , sendo que se entrar no if, o objeto instanciado fora, recebe uma nova posição e valor. o detalhe é que o res.json() , eu mando fora dos if e esta info objeto vazio, sendo que ele passou pelos if, veja o arquivo gist: https://gist.github.com/GlauberF/87dfe53f310acac2af83fdcfbdf0328b se possível, como deveria ficar o código para funcionar, neste caso.
O que estou fazendo de errado que no res.json() ta indo somente o conteudo de respSuccess.pessoas, e o respSuccess.endereco que esta dentro do if, por mais que to passando ele ao objeto, fora do if ele está inacesivel.
`
.then((d) => { let respSuccess = {};
`