Firebird blob到Base64 – Node.js

我正在迁移一个网站与Java / jsf节点/angular,但我有问题,从blob从火鸟数据库转换为base64使用节点火鸟。

connection.query(query,function(err,rows){ if(err) { res.json({"Error" : true, "Message" : "Error executing query"}); } else { var buffer; var bufferBase64; for(var i = 0; i < rows.length; i++){ rows[i].image(function(err, name, eventEmitter) { eventEmitter.on('data', function(chunk) { buffer = new Buffer(chunk, 'binary').toString('base64'); bufferBase64 += buffer; }); eventEmitter.on('end', function() { console.log(bufferBase64); // print base64 }); }); } res.json(rows); } connection.detach(); }); 

这个来自node-firebird的代码生成一个无效的base64,但是这个工作使用Java。

 byte[] encoded = Base64.getEncoder().encode(rs.getBytes("image")); System.out.println(new String(encoded)); 

这是一个图像的缓冲区从数据库返回的[函数]

感谢马克rotteveel解决我的问题。

如果有其他人有同样的问题,低于解决scheme。

  rows[i].image(function(err, name, eventEmitter) { let buffers = []; eventEmitter.on('data', function(chunk) { buffers.push(chunk); }); eventEmitter.once('end', function() { let buffer = Buffer.concat(buffers); console.log(buffer.toString('base64')); // print base64 }); });