mysql - Node-Mysql保存数据出错

标签 mysql node.js

我正在用mysql学习nodejs,我正在遵循这个例子: https://codeforgeek.com/2015/03/real-time-app-socket-io/

但是当我运行代码并尝试添加新数据时,我收到了这些错误:

C:\wamp\www\Node_JS\mysql>node server.js
Listening on 3000
A user is connected!
A user is connected!
C:\wamp\www\Node_JS\mysql\node_modules\mysql\lib\protocol\Parser.js:82
        throw err;
              ^
TypeError: Cannot read property 'release' of undefined
    at C:\wamp\www\Node_JS\mysql\server.js:37:14
    at Handshake.onConnect (C:\wamp\www\Node_JS\mysql\node_modules\mysql\lib\Pool.js:54:9)
    at Handshake.Sequence.end (C:\wamp\www\Node_JS\mysql\node_modules\mysql\lib\protocol\sequences\Sequence.js:96:24)
    at Handshake.ErrorPacket (C:\wamp\www\Node_JS\mysql\node_modules\mysql\lib\protocol\sequences\Handshake.js:103:8)
    at Protocol._parsePacket (C:\wamp\www\Node_JS\mysql\node_modules\mysql\lib\protocol\Protocol.js:274:23)
    at Parser.write (C:\wamp\www\Node_JS\mysql\node_modules\mysql\lib\protocol\Parser.js:77:12)
    at Protocol.write (C:\wamp\www\Node_JS\mysql\node_modules\mysql\lib\protocol\Protocol.js:39:16)
    at Socket.<anonymous> (C:\wamp\www\Node_JS\mysql\node_modules\mysql\lib\Connection.js:96:28)
    at Socket.emit (events.js:107:17)
    at readableAddChunk (_stream_readable.js:163:16)

这是我在 server.js 中的代码

var app     = require('express')();
var mysql   = require('mysql');
var http    = require('http').Server(app);
var io      = require('socket.io')(http);

/** mysql pool connection **/
var pool = mysql.createPool({
    connectionLimit :   100,
    host            :   'localhost',
    user            :   'root',
    password        :   '',
    database        :   'fbstatus',
    debug           :   false
});

app.get('/', function(req, res){
    res.sendFile(__dirname + '/index.html');
});

/** this will run automatically if server received a connection **/
io.on('connection', function(socket){
    console.log('A user is connected!');
    socket.on('status added', function(status){
        add_status(status, function(res){
            if(res) {
                io.emit('refresh feed', status);
            } else {
                io.emit('error');
            }
        });
    });
});

var add_status = function(status, callback) {
    pool.getConnection(function(err, connection){
        if(err) {
            connection.release();
            callback(false);
            return;
        }
        connection.query("INSERT INTO fb_status VALUES('" + status + "')", function(err, rows){
            connection.release();
            if(!err) {
                callback(true);
            }
        });
        connection.on('error', function(err){
            callback(false);
            return;
        });
    });
}

http.listen(3000, function(){
    console.log("Listening on 3000");
});

我不知道我的代码有什么问题。你能帮我吗?

最佳答案

    if(err) {
        connection.release();
        callback(false);
        return;
    }

在这里,如果出错,您将无法获得连接。

关于mysql - Node-Mysql保存数据出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33622306/

相关文章:

node.js - 运行使用 Node js 的 CoffeeScript

mysql - 查询自定义元数据字段?

android - 在android中上传图像到服务器而不使用String

php - 生成 future 的日期时间,没有 UNIX 时间戳

javascript - 通过 PowerBI API 在嵌入 View 中创建报告

node.js - 仅针对明确的请求 Google Sheets API 未经授权

javascript - 如何等到加载 chrome 标签的纺车停止?

用于处理 MySQL 中的嵌套集的 PHP 库

mysql - mysql 将两个结果合并为一个结果集

sockets - 用另一种编程语言实现node js的步骤