먼저 노드 js (질문을보세요)로 시작하는 중이 니 참아주세요
이것은 내 질문을 더 명확하게하기 위해 만든 경우입니다. 다른 JS에서 호출되는 함수를 만들었습니다.
exports.test = function(req, res){
connection.query('SELECT * FROM `test`', function (error, results) {
console.log(results);
});
};
그런 다음 object.test();
이 함수를 하드 코딩하는 대신 다른 JS에서 테이블 이름을 전달하여 일반화하고 싶습니다. 그렇게하는 방법?
Java에서는 이것에 대해 쉽게 인터넷 검색을 할 수 있습니다. 그러나 Node에서는 거의 모든 검색 결과가 URL (POST / GET)의 매개 변수에 대해 알려주지 만 내 필요는 매개 변수 / 인수를 함수에 전달하는 것입니다.
미리 감사드립니다
이것은 실제로 노드 질문이 아니라 JavaScript 질문입니다.
함수를 반환하는 함수를 만들 수 있습니다. 테이블 이름을 빌더에 전달한 다음 빌더가 생성하는 함수에서 사용합니다.
exports.makeTest = function(tableName) {
return function test(req, res){
connection.query('SELECT * FROM `' + tableName + '`', function (error, results) {
console.log(results);
});
};
};
참고 :tableName
사용자가 제어하고 신뢰할 수있는 코드에서 나온다고 가정 합니다. 그렇지 않으면 위의 문자열 연결이 허용되지 않습니다.
다음과 같이 사용합니다.
var test = makeTest("test");
... 그리고 전화 test
로 req
및 res
(또는 가능성 익스프레스 같은에 전달하는 것이다).
다음은 부품의 작동 방식을 보여주는 비 노드 예제입니다.
function makeTest(tableName) {
return function test(req, res) {
console.log("Table name is:", tableName);
console.log("req is:", req);
console.log("res is:", res);
};
}
var test = makeTest("test");
console.log("Call 1:");
test({name: "req1"}, {name: "res1"});
console.log("Call 2:");
test({name: "req2"}, {name: "res2"});
.as-console-wrapper {
max-height: 100% !important;
}
반환 후에도 tableName
인수가 여전히 test
함수에 액세스 할 수 있다는 것이 놀랍게 보일 수 있습니다 makeTest
. 이것이 자바 스크립트 클로저 의 특성입니다 . 여기에서 폐쇄에 대해 자세히 알아볼 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다