这个函数应该在服务器上异步运行吗

2admgd59  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(375)

我对node js不是很有经验,但我正在开发一些类似于uber在Map上实时显示汽车的东西。
所以我有一个sql数据库,里面有很多车和它们的gps位置。客户端将其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人同时运行这个函数,它肯定会阻塞。我所有的研究都告诉我,这是正确的方法,所以唯一的选择是将其作为nync运行,对吗?
是否只是returncars函数异步运行?我不确定是否因为connection/sqldetails变量不在函数或任何东西中,所以它都会尝试一次读取它,所以它可能应该进入函数或其他东西。

7y4bm7vi

7y4bm7vi1#

代码太零碎,无法真正帮助您,但一般来说:
如果您使用的是node的内置http服务或类似于express的分层服务,那么当接收到请求时,您的代码应该是异步运行的,您不需要做任何特殊的事情来实现这一点。
如果你用的是 npm 对于mysql访问模块,您用来进行查询的函数将异步运行,您不需要做任何特殊的事情就可以实现这一点。
在伪代码示例中,显示了 sqlQuery 功能替身。这可能就是您选择使用mysql访问模块的方式,无论是直接回调还是承诺。

相关问题