nodejs app在数据库连接不活动后崩溃

时间:2015-07-31 15:04:02

标签: mysql json node.js

我正在编写一个接受JSON的nodejs webservice,并使用(https://github.com/felixge/node-mysql)将其输入到mysql表中。

我的服务工作正常,如果没有数据传递给它并且没有超时(所以基本上应用程序一直在运行,但是一旦我发送带有JSON数据的请求,然后将数据输入到mysql表中。完成节点应用程序在一些空闲时间后被杀死,出现以下错误

var express = require('express');
var bodyParser = require('body-parser');  
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'xxxx',
  user     : 'xxx',
  password : 'xxxx',
  database : 'test'
});

var app = express();
// set our port
var port = process.env.PORT || 3000;        

// parse application/json
app.use(bodyParser.json())

// get an instance of the express Router
var router = express.Router();              

// POST / gets json data 
router.post('/', function(req, res) {       

    var data = req.body[0].record;

    // INSERT INTO posts SET `name` = 'hello', `name2` = 'hello2'
    // inserting data into the parent level form
    var query = connection.query('INSERT INTO '+ tablename +' SET ?', data, function(err, result) {
        if (err) throw err;
        console.log(result.insertId);

    });
    console.log("Parent \n" + query.sql); 
    res.send("Post Received: statusCode:" + res.statusCode);

});

app.use('/api', router);

// START THE SERVER
app.listen(port);
console.log('Magic happens on port ' + port);

我正在寻找一种优雅的方法来在完成处理时退出sql连接但不杀死nodejs应用程序。 我可以通过使用永远的东西来对抗它,以便在崩溃时重新启动应用程序,但我想要理解的是它们在代码中的一个根本错误......

以下是我插入数据代码的片段......

{{1}}

1 个答案:

答案 0 :(得分:1)

文档有很多关于此的内容。 See here.

您可以在查询完成后调用connection.end()。像

这样的东西
// it implicitly opens the connection by querying
connection.query('INSERT INTO '+ tablename +' SET ?', data, function(err, result) {
    if (err) throw err;
    console.log(result.insertId);
    connection.end();
});