简体   繁体   English

Firebird 查询返回 Buffer

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM