[英]Firebird query returns Buffer
This is my first time connecting to a Firebird database from Node JS.这是我第一次从 Node JS 连接到 Firebird 数据库。 I'm using the "node-firebird" package. Everything seems to work fine.
我正在使用“node-firebird”package。一切似乎都运行良好。 But I get these <Buffer 50 5a 41> tags back in my object.
但是我在我的 object 中得到了这些<Buffer 50 5a 41>标签。
This is what my query returns:这是我的查询返回的内容:
[
{
ARTICULO_ID: 422698,
NOMBRE: 'CONEXION 3/4 HHP-S',
ES_ALMACENABLE: <Buffer 53>,
ES_JUEGO: <Buffer 4e>,
ESTATUS: <Buffer 41>,
CAUSA_SUSP: null,
FECHA_SUSP: null,
IMPRIMIR_COMP: <Buffer 4e>,
PERMITIR_AGREGAR_COMP: null,
LINEA_ARTICULO_ID: 785107
}
]
And here is my code:这是我的代码:
const pool = require("./util/database");
const query = "SELECT * FROM articulos WHERE nombre='CONEXION 3/4 HHP-S'";
pool.get(function (err, db) {
if (err) throw err;
db.query(query, function (err, result) {
if (err) {
console.log(err);
}
console.log(result);
db.detach();
});
});
pool.destroy();
Edit: The columns that return a Buffer are all string datatypes.编辑:返回 Buffer 的列都是字符串数据类型。 The solution was buffer.toString()
解决方案是 buffer.toString()
It seems that the query was only returning Buffers for string datatypes.查询似乎只返回字符串数据类型的缓冲区。 I used this code to fix it:
我用这段代码来修复它:
//After query returns a result.
const product = result[0]; //Pull out the first result
for (let key in product) {
currentDataset = product[key];
if (Buffer.isBuffer(currentDataset) === true) {
product[key] = currentDataset.toString('utf-8');
}
}
My problem was lack of understanding how Buffers work.我的问题是不了解缓冲区的工作原理。 Thanks to @Mark Rotteveel for the advice.
感谢@Mark Rotteveel 的建议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.