我对node js不是很有经验,但我正在开发一些类似于uber如何在地图上实时显示他们的汽车的东西。
所以我有一个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查询不是即时的时候,如果有1000人同时运行这个函数,它肯定会阻塞。我所有的研究都告诉我,这是正确的方法,所以唯一的选择是异步运行,对吧?
另外,是否只有returnCars函数才能异步运行?我不确定是不是因为连接/ sql详细信息变量不在函数或任何东西中,所以它会尝试一次读取它,所以也许它应该放在函数或其他东西中。
发布于 2018-04-23 22:07:19
代码太过零碎,不能真正帮助您,但总的来说
npm模块进行MySQL访问,则用于执行查询的函数将异步运行,无需特殊操作即可实现。在您的伪代码示例中,您展示了sqlQuery函数替代函数的回调。这很可能是您选择使用的MySQL访问模块的使用方式,无论是通过这样的直接回调还是通过promises。
https://stackoverflow.com/questions/49983110
复制相似问题