0
我是一个初学Node.js的人,是否可以使用MySQL作为全局变量?Node.js和全局MySQL连接OBJ
我有这个代码里面db_helper.js:
global.client = require('mysql').createConnection({
user: '__mysqluser__',
password: '__mysqlpass__',
database: '__mysqldb__',
timezone: '-03:00'
});
global.client.connect();
在我main.js我只是做一个:
require('db_helper');
然后在其他js文件,每当我需要更新或选择我只要致电:
global.client(query, data);
我没有见过任何像这样的代码还,但它正常工作,但我遇到随机不时崩溃,重新加载页面时。
可以像这样使用它吗?我的崩溃与我连接到数据库的方式有关吗?
我认为这是相关的,因为当碰撞发生时,是因为MySQL不能返回数据,但分析结果时死机情况,如:
global.client.query(query, function(err, results, fields) {
if (err) throw err;
if (results && Object.prototype.toString.call(results) === '[object Array]') {
var j = result[0].data;
}
}
大多数时候,VARĴ有我期望它具有的值,但是当节点崩溃时,尽管它在之前检查(结果)一致性,但该变量返回为空。节点崩溃说:
result[0].data is undefined
谢谢。
编辑:每当客户端js文件在服务器上更新时发生崩溃。 (在通过FTP上传服务器上传的.js文件&的本地编辑后),为什么?
介绍为什么我不应该使用全局变量?我的意思是,它的存在是有原因的,它可以按照预期工作而不使用出口(这是一个很好的方法btw)。 –
@AntonioMax的我有一个全局变量的主要问题之一是,他们可以在任何地方定义,使得它真的很难跟踪他们进入存在。对于一个可能不是问题的小型项目,它可以在大型项目中使用。 – robertklep
是的,这是一个非常小的项目,大约70行代码,这个node.js非常整洁。无论如何,谢谢你的回答。我有一个使用mysql pooling和long pooling的崩溃临时修复程序。我将在稍后更新原文,谢谢。 –