gpt4 book ai didi

node.js - Postgres + NodeJS 插入,但不结束脚本

转载 作者:搜寻专家 更新时间:2023-11-01 00:47:29 26 4
gpt4 key购买 nike

我有这个脚本,它使用 SOAP XML,使其成为 JSON,并使用它在 PostgreSQL DB 上为 grafana 加载数据。

在我的主脚本上,我这样做

... do stuff

const req = http.request(conn, (res) =>
{
let data='';
res.on('data', (chunk) =>
{
data += chunk;
});
res.on('end', () =>
{
var dados=processaDados.processaDados(processedXML);
cargaBanco.gravaDados(dados);
});
}
);
... do stuff

req.end();

我的问题在 cargaBanco.gravaDados(dados)

dados 是我为将 JSON 数据加载到 PostgreSQL 数据库的函数传递的 JSON 对象。我正在使用 node-postgres 数据库。

下面这段代码来自cargaBanco.gravaDados


var pg = require('pg');
var config = require('./config');

module.exports = {
gravaDados: dados => {
var agora = new Date();

var totalDados = dados.length;

var connection = new pg.Pool({
connectionString: config.conn_string,
max: 1,
idleTimeoutMills: 5000,
connectionTimeoutMills: 2000
});

if (typeof connection === 'unindentified') console.err('ERRO!');

const parameterQuery =
'INSERT INTO taskstatus VALUES(Default, CAST($1 as timestamp), $2, $3, $4, $5, $6, $7) returning *';

connection.connect(async (err, client, done) =>
// connection.connect( (err, client, done) =>
{
if (err) {
console.log(err.stack);
}
for (linha of dados) {
const dadosInserir = [
agora,
linha['Resource_Name'][0],
linha['System'][0],
linha['Resource_Type'][0],
linha['Compound_Status'][0],
linha['Observed_Status'][0],
linha['Desired_Status'][0]
];

await client.query(parameterQuery, dadosInserir, async (err, results) =>
// client.query(parameterQuery,dadosInserir, (err, results)) =>
{
if (err) {
console.log(err.stack);
}
// await client.release;
}
);
// await client.release;
// done();
}
}
);
connection.end();
}
};

运行此脚本会导致数据加载到数据库中,但脚本会锁定,不会返回 shell,甚至不会超时...

我之前也尝试过使用await client.release...但是没有...

有什么帮助吗?我做错了什么?

很抱歉只包含代码片段,但这是内部工作,所以我需要以某种方式去特征化...

最佳答案

pg-promise 是一个更好的库,如果您不熟悉回调,可以使用 nodejs 的 Postgres promises。

关于node.js - Postgres + NodeJS 插入,但不结束脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57757407/

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