该功能是否应在服务器上异步运行

时间:2018-04-23 14:02:05

标签: javascript mysql node.js logic

我不是经验丰富的节点js,但我开发的东西类似于超级如何在地图上实时显示他们的汽车。

所以我有一个拥有大量汽车和gps位置的SQL数据库。客户端将其gps坐标和半径发送到以下函数。有些是伪代码现在。

var mysql = require('mysql');
var express = require('express');

var connection = mysql.createConnection({
    host: "",
    port: ,
    user: "",
    password: "",
    database: ""
});

user.on('returnCars', function(gps, radius){    
     connection.query({
        sql: "SELECT * FROM cars WHERE radius = ?", 
            values: [username] },                   

                    function(error, results, fields) 
                    {           

                    if(results) 
                        {
                            user.emit('returnCars', results);
                        }
                    }
            });
     });
});

因此,当sql查询arnt instant时,如果有1000个人同时运行此函数,它肯定会堵塞。我所有的研究都告诉我,这是正确的方法,所以唯一的选择就是让它运行asnync吧?

它也只是returnCars函数异步运行吗?我不确定是因为连接/ sql详细信息变量不是函数或任何东西,它会一次尝试并读取它所以也许它应该进入函数内部。

1 个答案:

答案 0 :(得分:2)

代码太过零碎而无法真正帮助您,但一般

  • 如果您正在使用Node的内置HTTP服务或其上面的分层内容,例如Express,那么您收到请求的代码应该是异步运行的,并且您无需做任何特殊的事情来制作发生了。

  • 如果您正在使用任何主要npm模块进行MySQL访问,那么用于进行查询的函数将以异步方式运行,并且您无需做任何特殊操作即可实现。

在您的伪代码示例中,您显示了sqlQuery函数替换的回调。这可能是你如何使用你选择使用的MySQL访问模块,或者直接回调那样或者承诺。

相关问题