Node JS:我的SQL回调函数返回数据到服务器或广播到房间id
1] Server.js
var express = require('express');
var app = express();
var http = require('http');
var server = http.createServer(app);
var io = require('socket.io').listen(server, {log:false });
var dbAction = require('./dbAction');
var yql = require('yql');
server.listen(config.port);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/public/index.html');
});
io.sockets.on('connection', function(socket)
{
socket.on('userAuthentication', function(loginDetails){
var test = dbAction.userAuthentication(loginDetails);
console.log(test);
console.log("---------------");
});
});
2] dbAction.js
var mysql = require('mysql');
var userInfo = {};
var connection = "";
exports.userAuthentication = function(info)
{
userInfo.unm = (info.unm).trim();
userInfo.pwd = (info.pwd).trim();
connection = mysql.createConnection({host: "localhost", user: "root", password: ""});
connection.query('USE user');
connection.query("SELECT * FROM users WHERE username ='"+ userInfo.unm +"'", function(err, results)
{
if (err) { console.log(err); }
else if(results.length > 0)
{
var key = (results[0]['key']).trim();
if(key != ""){
var select_sql = "another query";
connection.query(select_sql, function(err, results_1)
{
if (err) { console.log(err); }
else if(results_1.length > 0)
{
console.log( results_1);
}
});
}
}
});
}
查询:
1]我想要"result_1"返回到server.js "userAuthentication"在测试变量。
2]否则"result_1"将广播到特定房间。
添加套接字作为参数,然后您可以使用套接字对象在房间中发出。你也可以添加io对象,但我认为最好只给出套接字,例如,如果你想广播。
server.js
var test = dbAction.userAuthentication(loginDetails,socket);//NEW
dbAction.js
exports.userAuthentication = function(info,socket)//NEW
{
userInfo.unm = (info.unm).trim();
userInfo.pwd = (info.pwd).trim();
connection = mysql.createConnection({host: "localhost", user: "root", password: ""});
connection.query('USE user');
connection.query("SELECT * FROM users WHERE username ='"+ userInfo.unm +"'", function(err, results)
{
if (err) { console.log(err); }
else if(results.length > 0)
{
var key = (results[0]['key']).trim();
if(key != ""){
var select_sql = "another query";
connection.query(select_sql, function(err, results_1)
{
if (err) { console.log(err); }
else if(results_1.length > 0)
{
console.log( results_1);
socket.to(ROOM_ID).emit('result', results_1);//NEW
}
});
}
}
});
}