2013-05-31 2 views
0

저는 Nodejs에 익숙하지 않습니다. 코드를 제출하고 레코드가 있는지 확인하기 위해 레코드를 교차 검사하여 db (mongo) 레코드를 찾으려고합니다.특정 코드로 찾기 결과가 null 인 경우

"코드가 있습니다. 계속하십시오"및 "코드가 없습니다"라는 최종 결과를 얻는 방법에 대해서는 분명하지 않습니다.

userProvider.js :

UserProvider.prototype.findByCode = function(code, callback) { 
    this.getCollection(function(error, user_collection) { 
     user_collection.findOne({code: code}, function(error, result) { 
      callback(error, result) 
     }); 
    }); 
} 

가져 오기 컬렉션 userProvider.js에 속하는 :

UserProvider.prototype.getCollection= function(callback) { 
    this.db.collection('users', function(error, user_collection) { 
    if(error) callback(error); 
    else callback(null, user_collection); 
    }); 
}; 

응용 프로그램을

내가 내 손보는의 결과로 지금까지 무엇을 가지고 .js :

app.post('/game/code', function(req, res) { 
    if (req.param('code')) { 
     userProvider.findByCode(req.param('code'), function(error, result) { 
      console.log(error); 
      console.log(result); 
     }); 
    } 
}); 

그리고 코드를 제출하는 옥 형태 : 코드에서 PARAM ('코드') 결과를 기록

extends layout 

block content 
    h1= "Gimme a code" 
    div 
     form(method="post") 
      div 
       div 
        span.label code : 
        input(type="text", name="code", id="code") 
       div 
        input(type="submit", value="Verbind") 

콘솔. 그래서 저는 확신합니다. 그렇다면 null이 반환되는 이유는 무엇입니까?

답변

0

질문에서 'null'이 반환 된 위치를 말하지 않았습니다. 나는 nodejs에 익숙하지 않지만 코드에서 발견했다.

app.post('/game/code', function(req, res) { 
    if (req.param('code')) { 
     userProvider.findByCode(req.param('code'), function(error, result) { 
      console.log(error); 
      console.log(result); 
     }); 
    } 
}); 

그리고 'res'객체를 호출하지 않았다. 이 같은 것을 시도해야한다 : 당신이 입술

+0

해상도가 findByCode 통화에서 콜백 아닌 객체로 할 다양한 것들에 대한 아웃 http://expressjs.com/api.html#res.status

app.post('/game/code', function(req, res) { if (req.param('code')) { userProvider.findByCode(req.param('code'), function(error, result) { if(error) res.send(404, 'There is no code'); else { console.log(result); res.send('There is a code:'+result); } }); } }); 

확인합니다. 오류 및 결과는 다음과 같습니다. – CaptainCarl

+0

콜백 내에서 재정의하지 않으면 부모의 res에 액세스 할 수 있습니다. javascript의 범위/클로저에 대한 정보를 확인하십시오. 그것의 전문가가 아니지만 위의 작품 : http://stackoverflow.com/questions/12968098/can-ajax-callback-function-see-variables-from-parent-function – maethorr

+0

Ofcourse하지만 findByCode 함수의 결과를 원한다. 그럼에도 불구하고. 코드에 의해 발견 된 객체를 보유하고 있습니다 ;-) – CaptainCarl

관련 문제