Estou usando node-firebird para conversão de uma imagem do tipo blob para base64, o problema é que o método é assíncrono e com isso não consigo inserir a BASE64 na lista (linha 7) antes do res.json(rows)
A duvida é: Como contornar isso? é possível fazer a linha 6 deixar de ser assíncrona?
...
connection.query(query,function(err,rows){
if(err) {
res.json({"Error" : true, "Message" : "Error executing query"});
} else {
for(var i = 0; i < rows.length; i++){ // lê a lista que retorna do BD
readBlobToBase64Promise(rows[i]).then((base64)=>{ // transforma a imagem em base 64
rows[i] = IMAGEM_BASE64 = base64;
});
} // fim for
} // fim else
connection.detach(); // conexao
res.json(rows); // retorna a lista da consulta
});
function readBlobToBase64Promise(row){
var base64 = new Promise((resolve, reject) => {
row.IMAGEM(function(err, name, eventEmitter) {
let buffers = [];
eventEmitter.on('data', (chunk) => {
buffers.push(chunk);
});
eventEmitter.once('end', () => {
let buffer = Buffer.concat(buffers);
resolve(buffer.toString('base64'));
});
eventEmitter.once('error', (err) => {
reject(err);
});
});
});
return base64;
}
...