NodePromise与nodemysql不让应用程序终止
Node Promise with node-mysql does not let application terminate
我使用Node Promise(本机实现)来链接MySQL查询。
我使用node-mysql
库进行MySQL连接。
var mysql = require('mysql');
var db = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'root',
database: 'database'
});
该函数非常简单,并返回Promise:
function query(sql, repl) {
return new Promise(function(resolve, reject) {
db.getConnection(function(err, connection) {
if (err)
reject(err);
else {
connection.query(sql, repl, function(err, rows) {
connection.release();
if (err)
reject(err);
else
resolve(rows);
});
}
});
});
}
但是,当我运行它时,应用程序永远不会终止。
query('SELECT * FROM `subscriptions` LIMIT 5', []).then(function(rows) {
console.log(rows);
}, function(err) {
console.log('MySQL error: ' + err);
});
之后并没有更多的代码,但节点仍然没有终止,即使promise得到了解决。
可能是因为connection.release()
是异步的吗?我尝试直接使用池,并使用一个单独的连接而不是池。
之所以会发生这种情况,是因为在关闭所有连接之前,Node不会终止。
替换connection.release()
通过connection.destroy()
节点将成功终止。
感谢node-mysql
的开发人员给出的答案。
相关文章:
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- angular 1.5应用程序中的导航栏
- 在Web应用程序中使用Highcharts javascript
- angularjs+rails应用程序中未显示模板
- 使用acess代币登录Facebook,并通过网络应用程序离线发布
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 科尔多瓦页面类应用程序中的多个谷歌地图
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- 在phonegap应用程序内部重定向不起作用
- 使用react native检测应用程序终止
- 有没有办法在终止时触发快速应用程序中的功能
- NodePromise与nodemysql不让应用程序终止
- 终止应用程序由于未捕获的异常'NSInvalidArgumentException',原因:'*
- 如何处理应用程序在长时间暂停(未终止)后恢复的情况
- 当应用程序被终止或后台执行时,推送通知不会启动