我正在编写一个接受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}}
答案 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();
});