【发布时间】:2021-04-16 04:03:28
【问题描述】:
我想在我的 nodejs 服务器上构建一个 SQL 处理程序服务器端。
我希望我的 nodejs 接收来自客户端的请求 - 例如:
client.js
socket.emit("sql-query", "SELECT * FROM *");
socket.on('sql-response', results => {
do things with results...
}
server.js
socket.on('sql-query', query => {
connection.query(query, function(error, results, fields)) {
if(results > 0) socket.emit('sql-response', results);
else console.log('No results... yet !');
}
});
问题是,如果我这样做,每个需要发出 SQL 请求的函数都会获得 sql-response 事件。
我希望我的 emit 返回结果而不必捕获另一个事件(每个使用 SQL 请求的文件都会捕获)。
类似这样的: server.js
socket.on('sql-query', query => {
connection.query(query, function(error, results, fields)) {
if(results > 0) socket.return(results); //I know this is wrong and that's not how events work.
}
});
总体思路:使用 nodejs / socket.io 服务器从其他文件发出 SQL 请求。
请告诉我这样做是否令人头疼,以及是否有另一种更好的方法来实现这一点。
谢谢
【问题讨论】:
-
请告诉我这是否令人头疼,不是真的,但 SQL 注入会伤害更多。您可以使用确认回调,即
socket.emit(eventName[, …args][, ack]);、dupe/examples 不需要socket.on('sql-response' -
该死的谢谢你。这正是我所需要的,client.emit('ferret', 'tobu', (response) => { console.log(response) console.log('ack') });不知道您可以等待发射本身的响应。再次感谢您
-
np,不要忘记在调用之前检查它的函数,即
if (typeof ack === 'function') ack(result),链接中的欺骗答案不会解决它,如果它不是函数并调用它会使服务器崩溃
标签: javascript node.js websocket socket.io