【问题标题】:working with node.js and mySQL [closed]使用 node.js 和 mySQL [关闭]
【发布时间】:2013-12-30 22:49:57
【问题描述】:

我想使用 socket.io 从 node.js 查询 mySQL DB, 尽可能模块化的最佳方法是什么?

这是我到目前为止所做的:(它工作正常,但有更好的方法吗?)

var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, mysql = require('mysql')
, http = require('http');   
var query = "SELECT * FROM table";

app.listen(88);  
io.sockets.on('connection', function (socket) 
{ 
     socket.on('queryReq', function(){queryFunc(query, socket);
});

function queryFunc(query, socket){  
var connection = mysql.createConnection({
  host : 'localhost',
  user : 'admin',
  password : '1234'
});
    connection.query(query, function(err, rows){
    if(err != null) {
        socket.emit("DBnews", "Error in Query: " + err);
    }else{// Shows the results:
    for (var i=0; i<rows.length; i++){
       console.log(rows[i]);
       socket.emit("DBnews", '\n'+JSON.stringify(rows[i]));
    }
    }    
    connection.end();// Close connection
console.log("Disconnected!");
});
}

【问题讨论】:

  • 这个问题似乎是题外话,因为它是关于code review

标签: mysql node.js socket.io


【解决方案1】:

不要继续为每个查询创建/结束您的数据库连接。您可以在应用启动时连接到数据库,然后在退出 [process.on('exit',...)] 时将其关闭。除此之外,您的代码看起来很适合从套接字事件查询数据库。这实际上与从 GET 或 POST 请求中查询数据库没有什么不同。

【讨论】:

  • 嗨,克里斯,感谢您的快速回复。我在最后添加了这一行: process.on('exit',function(){connection.end()});但是如何检查它是否真的有效?
  • 你使用phpMyAdmin吗?如果是这样,您可以监视进程/连接。如果没有,请看这里:stackoverflow.com/questions/824428/…
猜你喜欢
  • 2020-05-22
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 2014-08-18
  • 1970-01-01
  • 2012-09-27
  • 2019-03-19
  • 2014-02-14
相关资源
最近更新 更多