node-mongodb 드라이버를 사용하여 node.js 코드를 작성했습니다. - 캐시 변수가 항상 정의되지 그렇지 않은 것을 제외하고 usersCollection 기능의Javascript 클로저 케이스에 대해 혼동을 느낀 경우
var db = connectionObject;
function getCollection(collectionName) {
return function(callback) {
var cache;
if (cache) return callback(null, cache);
db.collection(collectionName, function(err, collection) {
return err ? callback(err) : callback(null, cache = collection);
});
}
}
var usersCollection = getCollection('users');
usersCollection(function(err, collection) {
collection.find({}); // Rest of code here ...
});
반복 호출, 캐시 된 컬렉션 개체를 사용한다 : 나는이처럼 그들을 얻을 때 컬렉션 객체를 캐시로 결정했다. 이 코드를 변경하면 문제가 해결됩니다.
return function(callback) {
var cache = arguments.callee;
if (cache.cached) return callback(null, cache.cached);
db.collection(collectionName, function(err, collection) {
return err ? callback(err) : callback(null, cache.cached = collection);
});
}
'캐시'변수가 범위를 벗어나는 이유에 대해 아직도 혼란 스럽습니다. 내가 도대체 뭘 잘못하고있는 겁니까? 대신 당신이 지금 무슨의
function getCollection(collectionName) {
var cache;
return function(callback) {
:
게시하기 전에 jsbeautifier 또는 jsfiddle을 사용하여 코드의 형식을 올바르게 지정하십시오. 가독성이 향상됩니다. –