当前位置: 首页 > 面试题库 >

使用Node.js处理多个MySQL查询

何骞尧
2023-03-14
问题内容

我是事件/回调样式编程和NodeJS的新手。我正在尝试实现一个小的http服务器,它使用node-mysql模块来提供ddbb数据。

我的问题来自查询结构。由于经常有一些查询需要运行先前查询的结果,因此我无法同时(html" target="_blank">异步)运行所有查询,因此不得不等待一些结果。

我的第一种方法是同时运行所有非依赖性查询,然后循环运行,直到所有非依赖性查询都设置了一个标志,说我已经完成,这样我就可以继续处理非依赖性(同步)查询,但是我不这样做知道这是否是正确的方法。

像这样:

function x(){
    var result_for_asynch_query_1 = null
    var result_for_asynch_query_2 = null

    mainLoop(){
        // call non-dependant query 1
        // call non-dependant query 2

        // loop until vars are != null

        // continue with queries that require data from the first ones
    }
}

//for each browser request
httpServer{
     call_to_x();
}.listen();

这样,我可以节省一些时间来获得最终结果,因为我不需要以串行方式等待所有响应,而只是等待最长的响应。

有一种通用的方法吗?我不遵循的任何设计模式?


问题答案:

尝试以其他方式思考(异步流howtonode.org上有很好的介绍)

var db = get_link_or_pool();

do_queries( callback ) {
    db.query(sql1, function(err, res1) {
        if (err) {
             callback(err);
             return;
        }
        // use res1 ...
        db.query(sql2, function(err, res2) {
             if (err) {
                 callback(err);
                 return;
             }
             callback(null, res2); // think 'return'
        }
    });
}

request_handler(req) {
    do_queries( function(err, result) {
        if(err)
            report_error(err);
        else
            write_result(req, result);
    });
}


 类似资料:
  • 问题内容: 我已经阅读了一些在node.js中使用mysql的示例,并且对错误处理有疑问。 大多数示例都进行如下错误处理(为简便起见): 每次发生sql错误时,这都会导致服务器崩溃。我想避免这种情况并保持服务器运行。 我的代码是这样的: 我不确定这是否是处理它的最佳方法。我也想知道查询的块中是否应该有一个。否则,连接可能会保持打开状态并随着时间的推移逐渐建立。 我习惯了Java 或在这里可以“干净

  • 问题内容: 我有python背景,目前正在迁移到node.js。由于其异步特性,我无法适应node.js。 例如,我试图从MySQL函数返回一个值。 经过一番阅读后,我意识到上面的代码无法正常工作,由于node.js的异步特性,我需要返回一个promise。我无法编写像python这样的node.js代码。如何转换为返回承诺,以及如何处理返回的值? 实际上,我想做的就是这样。 如何以可读的方式在n

  • 想知道如何看待mysql json专栏? category_ids例如) [19, 102, 108] 如果我想搜索包含类别id 102的产品列表,如何使用queryDSL进行查询? 我尝试了JsonNode类型,但它不起作用。

  • 问题内容: 如何在同一例程中使用两个游标?如果我删除了第二个游标声明并获取了循环,一切都将正常工作。该例程用于在我的webapp中添加朋友。它使用当前用户的ID和我们要添加的朋友的电子邮件作为朋友,然后检查电子邮件是否具有相应的用户ID,如果不存在朋友关系,它将创建一个。除此以外的任何其他常规解决方案也都很好。 问题答案: 我终于写了一个执行相同功能的不同函数: 我希望这是一个更好的解决方案,无论

  • 问题内容: 在我正在使用的Web服务中,我需要使用查询参数来实现一个URI,如下所示: 要对其进行分解,我需要能够使用查询参数来指定多个/所有商店中的数据以及这些商店中多个/所有项目的数据。到目前为止,我已经能够很好地实现一个查询参数以提取项目数据,但是我对如何实现更多查询一无所知,而且似乎找不到我之前所见过的资源。通过此实现。 到目前为止,我所采用的方法是 这对于一项很有效,如果我不在URI中键

  • 问题内容: 我想编写脚本,具有对多个插入查询的功能。让我更好地解释一下。 我有一个html形式的输入。而且我有MySQL查询要插入到表中。所以我想让我的函数为“数量”次插入此查询。 例如要插入3次。有什么建议么? 问题答案: http://dev.mysql.com/doc/refman/5.5/zh- CN/insert.html