necesito hacer varias peticiones a la base de datos segun la primera respuesta de un query pero al realizarlo con "promise" ejecuta la primera sentencia y salta al ultimo "then" y da la respuesta antes de terminar la ejecucion, por favor alguien que me pueda aydar.
pruebasModule.promesa = async (idc, callback) => {
// console.log(id);
var sql = 'SELECT * FROM historia_clinica WHERE historia_clinica.id_historiacl = ?;';
var promise = new Promise(async function (res,rej){
await connection.query(sql,idc,(err,data) => {
// console.log(data);
return (err) ? rej(err) : res(data);
})
});
promise.then(async (res1,rej1)=> {
console.log('resolve de antecedentes');
res1 = res1[0];
console.log(res1);
console.log(res1.id_antecedentesf);
if(res1.id_antecedentesf != null)
{
let sqlaf = 'SELECT * FROM prevenirexpres.antecedentes_f WHERE id_antecedentesf = ?;';
await connection.query(sqlaf,[res1.id_antecedentesf],(err,respaf)=>{
console.log(respaf);
res1.antecedentesf = respaf;
console.log('resp de query antecedentef');
console.log(res1);
return res1;
})
}
else
{
console.log('resp de query antecedentef no existe');
console.log(res1);
return res1;
}
}).then(async (res2,rej2)=>{
console.log('AFTER RES1');
})
}
la respuesta que obtengo es esta para que miren y me ayuden muchas gracias.
24
resolve de antecedentes
RowDataPacket { id_historiacl: 24, tipo_consulta: 'primera vez',
motiv_oconsulta: 'dolor cabeza', enfermedades_preex: 'migraña',
id_historia_opt: null, id_antecedentesf: 22, id_antecedentesp: 18, id_habitosyfactores: 13, id_revisionpsistemas: 3, id_examenf: null, usuarios_id: 48, id_servicios: 42, createdAd: 2019-11-22T14:55:51.000Z }22
AFTER RES1 Esta es la respuesta que deberia salir al final
[ RowDataPacket { id_antecedentesf: 22, cardiopatias: 1, diabetes: 1, hipertension: 1, asma: 0, enfermadad_psiquiatrica: 0, efisema: 0, cancer: 1, epilepcia: 0, otro: null } ] resp de query antecedentef
RowDataPacket { id_historiacl: 24, tipo_consulta: 'primera vez',
motiv_oconsulta: 'dolor cabeza', enfermedades_preex: 'migraña',
id_historia_opt: null, id_antecedentesf: 22, id_antecedentesp: 18, id_habitosyfactores: 13, id_revisionpsistemas: 3, id_examenf: null, usuarios_id: 48, id_servicios: 42, createdAd: 2019-11-22T14:55:51.000Z,
antecedentesf: [ RowDataPacket { id_antecedentesf: 22, cardiopatias: 1, diabetes: 1, hipertension: 1, asma: 0, enfermadad_psiquiatrica: 0, efisema: 0, cancer: 1, epilepcia: 0, otro: null } ] }
como se puede ver da la respuesta antes de ejecutar el segundo query con AFTER RES1 y despues realiza el segundo then en el que carga los antecedentes.