gpt4 book ai didi

javascript - 如何等待建立数据库连接并为数组中的每个数据库执行查询

转载 作者:行者123 更新时间:2023-11-30 20:25:43 24 4
gpt4 key购买 nike

一个文件包含带有数据库详细信息的 json 数据。对于每个数据库连接,需要执行一系列查询。目前 map 函数正在等待数据库连接。

下面是启动函数

function start() {
console.log('function initiated');
try {
let jsonData = fs.readFileSync('../request.json');
let jsonString = JSON.parse(jsonData);

//jsonString['request'].forEach(async function(json) {
jsonString['request'].map(async json => {
dbdetails = json.dbdetails;
//dbdetails.forEach(async function(db){
await dbbdetails.map(async db => {
console.log('pdbdetails: ' + db);
connString = json.connString;

//makes the DB connection
await connectDB(db.userId, db.Password, connString)
.then(async conn => {
await execution(conn, pdbDetails, vmUser, vmPassword, ip);
})
.catch(err => {
console.log(err);
});
console.log('after each execution');
//}
});
});
} catch (err) {
console.log(err.message);
return;
}
}

下面的函数是建立数据库连接并返回连接

function connectDB(oUser, oPassword, connString) {
console.log('inside connectDB');
return new Promise((resolve, reject) => {
oracledb.getConnection(
{
user: oUser,
password: oPassword,
connectString: connString
},
function(err, connection) {
if (err) {
console.error(err.message);
reject(err);
//throw err;
}
console.log('returning connection');
//console.log(connection);
resolve(connection);
//return connection;
}
);
});
}

下面是对数据库执行查询服务的函数

  function execution() {
/// series of sql query execution
}

最佳答案

不确定你到底想做什么,但听起来问题是 .map 没有等待你的异步函数。如果您必须一次完成一个,请使用 for 循环:

for ( var item of array ) {
await item.something();
}

一次完成所有操作:

var results = await Promise.all( array.map( item => item.something() )

关于javascript - 如何等待建立数据库连接并为数组中的每个数据库执行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50957397/

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