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

标签 javascript mysql node.js callback

我有两个文件:server.js 和 sqlHelper.js。服务器与 Web 浏览器建立套接字连接并检索行号,然后将其转发到 sqlHelper。相关代码片段如下:

服务器.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。

我不确定我的方法是否正确。我确信答案涉及回调,但我不确定为什么我的数据在这两个 js 之间显示不同。

提前致谢!

最佳答案

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

关于javascript - 使用 Node.JS 获取对象对象检索/格式化 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34536922/

相关文章:

javascript - putState() 和 putPrivateData() 可以在同一个链代码中使用吗?

javascript - 在用户激活的动画期间暂停所有背景动画(jquery)

PHP 函数返回零

MySQL:搜索一个字段,然后替换同一行中的另一个字段

mysql - 忽略时间和小时在MySQL中获取今天的记录

node.js - 作为 Slack 机器人回复丰富的消息

javascript - 无法让 Grunt 运行

javascript - 工厂功能原型(prototype)

node.js - 主体错误: Implementing ngx-soap client in Angular 4

javascript - Yodlee getMFAResponse 验证码字节数组