gpt4 book ai didi

javascript - 在nodejs中使用aysync对oracledb进行同步查询

转载 作者:行者123 更新时间:2023-12-03 07:47:43 24 4
gpt4 key购买 nike

我对 Nodejs 很陌生。我正在使用 oracledb 并希望以同步顺序进行查询。因此,一旦执行第一个查询,查询的输出将用于第二个查询。我查看了 async.waterfall 并写了下面的代码。以同步方式调用函数的正确方法是?提前致谢。第一个查询可能比第二个查询花费更多时间。

var update = function(fnParam1, fnParam2){  
oracledb.maxRows = 10000;
oracledb.getConnection(
{
user : dbConfig.user,
password : dbConfig.password,
connectString : dbConfig.connectString
},

function(err, connection)
{
if (err) { console.log(err.message); return; }
async.waterfall([
function(callback) {
connection.execute("select column1 from table1 where param1 =:nm",[fnParam1],
function(err, result)
{
if (err) { console.log(err); return; }
column1 = String(result.rows[0][0]);
});
callback(null, column1,connection);
},
function(column1, connection,callback) {
connection.execute("select count(*) from table2 where column1 = :par1 and column2= :par2",[column1,fnParam2],
function(err, result)
{
if (err) { console.log(err); return; }
var count = String(result.rows[0][0]);
console.log("count result:" + count)
});
callback(null, count);
}
],
function (err, result) {
console.log("Done" + result);
});
});
};

最佳答案

快速浏览一下代码,我注意到您的“回调”调用不在传递给执行的回调函数中。这意味着在获得执行方法的结果之前,您将进入 waterfall 中的下一步。这是您的代码,稍作修改以演示我的意思。另外,使用完毕后不要忘记释放连接。

var update = function(fnParam1, fnParam2){  
oracledb.maxRows = 10000;
oracledb.getConnection(
{
user : dbConfig.user,
password : dbConfig.password,
connectString : dbConfig.connectString
},

function(err, connection)
{
if (err) { console.log(err.message); return; }
async.waterfall([
function(callback) {
connection.execute("select column1 from table1 where param1 =:nm",[fnParam1],
function(err, result)
{
if (err) { console.log(err); return; }

column1 = String(result.rows[0][0]);
callback(null, column1, connection);
});
},
function(column1, connection, callback) {
connection.execute("select count(*) from table2 where column1 = :par1 and column2= :par2",
[column1,fnParam2],
function(err, result)
{
if (err) { console.log(err); return; }
var count = String(result.rows[0][0]);
console.log("count result:" + count);
callback(null, count);
});
}
],
function (err, result) {
console.log("Done" + result);
});
});
};

关于javascript - 在nodejs中使用aysync对oracledb进行同步查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35133787/

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