gpt4 book ai didi

node.js - 如何在 node.js 中的异步和条件循环中执行嵌套查询

转载 作者:行者123 更新时间:2023-11-29 13:44:18 25 4
gpt4 key购买 nike

我正在为我的项目使用 node.js、express 和 postgres 数据库。我在异步函数中有几个查询,我无法按顺序执行。示例代码供引用。

for(let i=0;i<person_size;i++)
{
var check_person_query="select per_id_pk from person_tbl where per_fname='"+person_fname[i]+"' and per_lname='"+person_lname[i]+"'";

dbClient.query(check_person_query,function(err,result){
if(result.rows.length>0)
{
console.log("Call: 1.1");
console.log("person already exists");
}
else
{
var insert_person_query = "insert into person_tbl (per_fname,per_lname,per_gender,profile_photo) values('"+person_fname[i]+"','"+person_lname[i]+"','"+person_gender[i]+"','profile_photo_link')";
//console.log("query2: "+insert_person_query);
dbClient.query(insert_person_query,function(err,result){
if (err) throw err;
console.log("Call: 1.2");
console.log("New person has been added");
});

var fullname = person_fname[i].concat(person_lname[i]);
low_fullname = fullname.toLowerCase();

person_pic[i].mv("/home/aniket/content_info/images/"+low_fullname+".jpg", function(err){
if (err) throw err;
});
}
});
}//end for

在上面的代码中,当 if 条件失败时,else 部分在我的 async.series 函数的最后执行。只要条件成功,一切都会按顺序完美运行。如何顺序运行嵌套数据库查询?我已经使用了 async.waterfall 但仍然没有预期的输出。

更新:(已解决)

我没有使用嵌套的查询函数,而是删除了嵌套,并准备了一个查询,这样我就可以获得预期的结果并保持执行顺序。

最佳答案

你真的应该只使用 async/await。 pg lib supports promises , 所以你可以这样做:

for(let i=0;i<person_size;i++) {
const result = await dbClient.query(check_person_query);
if(result.rows.length <= 0) {
await dbClient.query(insert_person_query);
}
}

这里有一些关于 using for loops with async/await 的更多信息.

关于node.js - 如何在 node.js 中的异步和条件循环中执行嵌套查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50874400/

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