相关疑难解决方法(0)

node.js,express - 以同步方式在循环内一个接一个地执行mysql查询

在我的node.js,表达应用程序,我正在与superagent中间件进行ajax调用.该调用使用node-mysql中间件通过相当多的数据库查询来获取复杂数组中的数据库数据.

在粘贴代码之前,我试图用语言解释我想要做什么,尽管代码足以说明它想要做什么,并且第一次回调中的所有异步事件应该以同步方式完成.

说明:

在第一个查询的回调中,执行for循环以多次运行第二个查询,并且在每个循环之后,仅在第二个查询的回调完成后才调用下一个循环.下一个代码行的情况也是一样的.

码:

但是,您可以跳过 for循环的内部(在注释中标记),以便在需要时简化和简化.

conn.query("SELECT * FROM `super_cats`",function(error, results, fields) {   

        if(error){console.log("erro while fetching products for homepage "+ error);}

        for(var i in results) { // FIRST FOR LOOP INSIDE THE FIRST QUERY CALLBACK

            /*Innards of for loop starts*/    
            var elem = new Object();
            var supcat_id=results[i].id;
            elem.super_id =supcat_id;
            elem.cats=new Array();
            var cat= '';
            /*Innards of for loop ends*/ 

            conn.query("SELECT * FROM `categories` WHERE `supcat_id`="+supcat_id,function(error_cats, results_cats, fields_cats) {   

                if (error_cats) …
Run Code Online (Sandbox Code Playgroud)

asynchronous node.js express node-mysql

8
推荐指数
1
解决办法
8256
查看次数

使用async.each获取对象密钥

我有一些JSON数据如下:

{ 
    version: 1,
    partitions: { 
        '0': [ 1616133379 ], 
        '1': [ 1616133378 ], 
        '2': [ 1616133380 ] 
    } 
}
Run Code Online (Sandbox Code Playgroud)

我使用async.each循环遍历数据,如下所示:

async.each(topicData.partitions, function(data, callback){
    console.log('/brokers/topics/' + topic + '/partitions/' + data + '/state');
    callback();
},
function(err){
    if(err) {
        console.log(err);
        callback(err);
    }
});
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

'/ brokers/topics/testing/partitions/1616133379/state''/ brokers/topics/testing/partitions/1616133378/state''/ brokers/topics/testing/partitions/1616133380/state'

正如您所看到的,data通过async.each函数传递的项目保持键/值对的值,而我实际上希望它传递键以产生此输出:

'/ brokers/topics/testing/partitions/0/state''/ brokers/topics/testing/partitions/1/state''/ broker/topics/testing/partitions/2/state'

无论如何我可以获得传递的密钥而不是价值吗?

这必须异步运行.

谢谢

javascript asynchronous

7
推荐指数
1
解决办法
6525
查看次数

标签 统计

asynchronous ×2

express ×1

javascript ×1

node-mysql ×1

node.js ×1