gpt4 book ai didi

node.js - 为什么node-firebird输出字节缓冲区而不是字符串值?

转载 作者:太空宇宙 更新时间:2023-11-03 21:50:54 28 4
gpt4 key购买 nike

我是 Node.js 和 javascript 研究的新手,我正在尝试构建一个后端来从 Firebird 数据库获取信息。

我正在使用我正在学习的类(class)中的一些依赖项。我的项目为“express”、“nodemon”、“node-firebird”。

使用以下结构:

Project structure

我的 server.js 文件中的代码是:

const firebird = require('node-firebird');
const express = require('express');
const app = express();
//const teste;

const options = {
host: '127.0.0.1',
database: 'C:/Users/alexandrefelix.GREENCANE/Desktop/Aulas/backend-firebird/src/TGA.FDB',
user: 'SYSDBA',
password: 'masterkey',
};


app.get('/', (req, res) => {

// 5 = the number is count of opened sockets
var pool = firebird.pool(5, options);

// Get a free pool
pool.get(function(err, db) {

if (err)
throw err;

// db = DATABASE
db.query('SELECT * FROM GEMPRESA', function(err, result) {
// IMPORTANT: release the pool connection
console.log(result);
db.detach();
});

});

// Destroy pool
pool.destroy();

return res.json({ message: 'Hello World!'});

});


app.listen(3333);

因此,当我运行代码并在浏览器中访问“localhost:3333”时,它会显示我的测试消息(Hello World),但在控制台中,它会将 varchar 字段显示为缓冲区:

城市:缓冲区 55 42 45 52 41 42 41

什么时候应该是:

城市:“乌贝拉巴”

我的问题是为什么返回的 JSON 以这种方式显示 VARCHAR 字段以及如何将列的结果放入变量中。

最佳答案

result实际上是一个需要解析的resultSet

result.forEach( function(row) {
console.log( row.id, ab2str(row.name)); //id and name are fields from the select *
});

function ab2str(buf) {
return String.fromCharCode.apply(null, new Uint16Array(buf));
}

更多信息:https://github.com/hgourvest/node-firebird/wiki/Example-of-querying-using-Promises

关于node.js - 为什么node-firebird输出字节缓冲区而不是字符串值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58303870/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com