javascript-module.exports作用域和node-mysql
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-module.exports作用域和node-mysql,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2494字,纯文字阅读大概需要4分钟。
内容图文
![javascript-module.exports作用域和node-mysql](/upload/InfoBanner/zyjiaocheng/882/0ca5a75e3b804d1788cf5ff27d6ccd61.jpg)
我有database.js文件可以连接到db并管理连接,我可以导出连接并在我的应用中重用它
var mysql = require('mysql');
pool = mysql.createPool({
host: cfg.mysql.host,
user: cfg.mysql.user,
password: cfg.mysql.pass,
database: cfg.mysql.db,
port: cfg.mysql.port
});
function handleDisconnect() {
pool.getConnection(function(err, cnt) {
module.exports.connection = cnt;
});
pool.on('error', function (err) {
console.log(err);
});
};
handleDisconnect();
process.on('uncaughtException', function (err) {
console.error(err.code);
if(err.code === "PROTOCOL_CONNECTION_LOST")
handleDisconnect();
console.log("Node NOT Exiting...");
});
app.js
var db = require('./database');
app.get('/test', function(req, res) {
db.connection.query('SELECT * from table', function(err, result) {
console.log(result);
});
}
这很好.我的问题是当mysql服务器断开连接时.我通过调用handleDisconnect()函数来获取新连接来处理此错误.但是,当发生这种情况时,当我导航到浏览器/ test时,app.js中的连接未定义
TypeError: Cannot call method 'query' of undefined
有什么想法吗?
解决方法:
您只需在数据库服务器上的每个查询之后将连接放回池中即可
这是一个例子
db.js
var mysql = require('mysql');
var pool = mysql.createPool({
host : 'localhost',
user : 'root',
password : 'root',
database : 'test',
port: 8889
});
exports.getConnection = function(callback) {
pool.getConnection(function(err, connection) {
callback(err, connection);
});
};
app.js
var db = require('./db');
var http = require("http");
var server = http.createServer(function(request, response) {
db.getConnection(function(err, connection){
if(!err){
connection.query('SELECT * from users' , function(err, rows) {
var users = '';
for (var i = 0; i < rows.length; i++) {
users += rows[i].name + "<br />";
}
connection.release(); // always put connection back in pool after last query
response.writeHead(200, {"Content-Type": "text/html"});
response.write("<!DOCTYPE html>");
response.write("<html>");
response.write("<head>");
response.write("<title>Hello World Page</title>");
response.write("</head>");
response.write("<body>");
response.write(users);
response.write("</body>");
response.write("</html>");
response.end();
});
}else{
response.writeHead(200, {"Content-Type": "text/html"});
response.write("<!DOCTYPE html>");
response.write("<html>");
response.write("<head>");
response.write("<title>Hello World Page</title>");
response.write("</head>");
response.write("<body>");
response.write(err.toString());
response.write("</body>");
response.write("</html>");
response.end();
}
});
});
server.listen(9999);
console.log("Server is listening localhost:9999");
内容总结
以上是互联网集市为您收集整理的javascript-module.exports作用域和node-mysql全部内容,希望文章能够帮你解决javascript-module.exports作用域和node-mysql所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。