저는 Node.js의 초보자입니다. MySQL을 글로벌 var로 사용해도 괜찮습니까?Node.js와 글로벌 MySQL 연결 OBJ
나는 내 코드와 db_helper.js이 : 내 main.js에
global.client = require('mysql').createConnection({
user: '__mysqluser__',
password: '__mysqlpass__',
database: '__mysqldb__',
timezone: '-03:00'
});
global.client.connect();
난 그냥 할을 A :
I 업데이트해야 할 때마다 JS 다른 파일에 다음require('db_helper');
또는 SELECT로 전화하십시오 :
global.client(query, data);
아직 어떤 코드도 보지 못했지만 예상대로 작동하지만 임의적으로 발생합니다 페이지를 다시로드 할 때 때때로 충돌합니다.
이렇게 사용해도 괜찮습니까? 내 충돌이 DB에 연결하는 방식과 관련이 있습니까?
나는 사고가 발생했을 때 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에 J가있다 가치를 기대하지만, 노드가 충돌 할 때,이 var은 이전에 일관성을 검사한다는 사실에도 불구하고 빈 값을 반환합니다. 노드가 다음과 같이 말합니다.
result[0].data is undefined
감사합니다.
편집 : 클라이언트 js 파일이 서버에서 업데이트 될 때마다 충돌이 발생합니다. (FTP를 통해 & 서버 업로드) .js 파일의 로컬 편집 후, 왜?
왜 글로벌 var을 사용하지 말아야하는지에 대한 의견을 피력 하시겠습니까? 내 말은, 그것은 이유가 존재하고 그것이 수출을 사용하지 않고 예상대로 작동한다는 것입니다 (멋진 접근 방식입니다). –
@AntonioMax 전역 변수와 관련된 주요 쟁점 중 하나는 어디에서나 정의 할 수 있기 때문에 존재하는 곳을 추적하기가 정말 어렵다는 것입니다. 문제가되지 않을 수도있는 소규모 프로젝트의 경우 더 큰 프로젝트에서 가능합니다. – robertklep
네, 아주 작은 프로젝트입니다. 약 70 줄의 코드가 있습니다.이 노드는 정말 깔끔합니다 .js. 어쨌든 답해 주셔서 감사합니다. mysql 풀링과 긴 풀링을 사용하는 충돌에 대한 임시 수정본이 있습니다. 나중에 원본 게시물을 업데이트 할 예정입니다. 감사합니다. –