使用Node.JS获取对象Object来检索/格式化MySQL

时间:2015-12-30 20:39:34

标签: javascript mysql node.js callback

我有两个文件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之间显示不同。

提前致谢!

1 个答案:

答案 0 :(得分:0)

这是异步的,因此首先需要回调查询函数以返回结果。否则,您可能无法获得正确的结果。另外,结果将是一个数组,因此result [0] .red,result [0] .green等将是您访问列值的方式。