我有两个文件server.js和sqlHelper.js。服务器与Web浏览器建立套接字连接,并检索行号,然后将其转发到sqlHelper。以下相关代码段:
server.js
//Setup websocket connection with browser
var ws = require("nodejs-websocket")
var server = ws.createServer(function (conn) {
console.log("Connected")
conn.on("text", function (str) {
var select = require('./sqlHelper.js');
select.query(str, returnVal);
//this returns object Object
function returnVal(res){
console.log("Got it red:"+res);
}
conn.on("close", function (code, reason) {
console.log("Connection terminated")
})
}).listen(7001)
sqlHelper.js
exports.query = function(res, conn){
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '******',
database: '*******'
});
connection.connect();
connection.query('select red, green, blue, c1, c2 from table
where ID ='+res, function(err, result){
if(err){
console.error(err);
return;
}
console.log(result);
//return result;
});
};
//this returns the correct information
exports.returnVal=function(res){
console.log(res);
}
当我从SQLHelper.js中的方法写入控制台时,值是正确的,但是当我在server.js中使用相同的方法时,我得到了对象Object。
我不确定我的做法是否正确。我确信答案涉及回调,但我不确定为什么我的数据在这两个j之间显示不同。
提前致谢!
答案 0 :(得分:0)
这是异步的,因此首先需要回调查询函数以返回结果。否则,您可能无法获得正确的结果。另外,结果将是一个数组,因此result [0] .red,result [0] .green等将是您访问列值的方式。