código dado sobre cómo manejar la llamada asíncrona en el interior si la condición no almacena el nombre nuevo en el nombre y ejecuta la devolución de llamada primero
var xyz = function (data, callback) { try{ pool.query('select * from devices',[1],function(err,result){ if(result.rows[0].name = 12){ pool.query('select * from devices',[12],function(err,result){ result.rows[0].name = result.rows[0].newname; } } callback(result.rows[0].name); }); }catch(err){ callback(err); } }Dado que etiquetó async-await, deberá usar Promise
Asi que
Crear una función auxiliar como esta
const promiseQuery = (pool, ...args) => new Promise((resolve, reject) => { pool.query(...args, (err, result) => { if (err) return reject(err); resolve(result); }); });Entonces úsalo así
var xyz = async function (data, callback) { try { const result = await promiseQuery(pool,'select * from devices', [1]); if (result.rows[0].name = 12) { const result = await promiseQuery(pool, 'select * from devices', [12]); result.rows[0].name = result.rows[0].newname; callback(result.rows[0].name); } } catch (err) { callback(err); } }Por supuesto, algunas db ya tienen una versión prometida de sus funciones.
Entonces sería como
var xyz = async function (data, callback) { try { const result = await pool.query('select * from devices', [1]); if (result.rows[0].name = 12) { const result = await pool.query('select * from devices', [12]); result.rows[0].name = result.rows[0].newname; callback(result.rows[0].name); } } catch (err) { callback(err); } }