2012-03-11 2 views
0

express에서 다음 라우트가 호출되면 실제로 6 회 실행됩니다. console.log가 6 번 인쇄되고 mongoose 논리가 6 번 실행됩니다 (데이터베이스에 6 시간 저장).여러 번 호출 된 Http 라우트

그런 다음 cloud9ide에서 http 500이 반환되었습니다. "프록시 요청을 보낼 수 없습니다". 정말 혼란스럽고 코드에 루프가 없습니다. 어떻게 될 수 있습니까? console.log ("in else (2)"); 6 번 인쇄 해.

편집 : mongooseLogic 코드를 주석 처리하여 여러 부분을 시도했지만 문제가 여전히있었습니다. 이것은 마치 몽구스 문제가 아닌 것처럼 보입니다.

두 번째 편집 : 전송할 본문을 가져 와서 하드 코드 한 게시물이 변경되어 경로가 한 번만 실행되었습니다.

세 번째 편집 : 나는 또한 facebook oauth로 세션/인증을 위해 모든 인증을 사용하고 있습니다. mongooseLogic 파일에

app.post("/result/:userId/:elementId", function(req, res) { 
    var receivedJSON = req.body;  

    console.log("In route"); 

    //Making sure the receive request is valid 
    if(typeof(receivedJSON.type) !== undefined) { 
    mongooseLogic.saveResults(req.params.elementId, receivedJSON, req.params.userId, function(message) { 
     if(message === "Success") { 
     res.json({ success: true, message: 'Result saved.'});  
     } 
     else { 
     res.json({ success: false, message: 'Error in saving results. Trace: ' + message}); 
     } 
    }); 
    } 
    else { 
    res.json({ success: false, message: 'Failed, Invalid object sent to server'}); 
    } 
}); 

코드 :

var saveResults = function(elementRefId, receivedResult, userId, callback){ 

    if(elementRefId.toString().length !== 24){ 
     callback("Invalid objectId for elementId"); 
    } 
    else{ 
      Result.findOne({ "id" : userId, "serieResult.id": elementRefId }, function(err, result){ 
       if(err){ 
        callback("No Document found: " + err); 
       } 
       else if(result === null){ 
        console.log("in null"); 
        var tempResult = { 
         id   : elementRefId, 
         unit   : receivedResult.unit, 
         value  : receivedResult.value 
        } 
        Result.update({ "id" : userId}, { $push: {"serieResult": tempResult}}, {upsert: true}, function(err){ 
         if(err){ 
          callback("Error in saving result (Distance): " + err); 
         } 
         else{ 
          callback("Success"); 
         } 
        }); 
       } 
       else{    
        Result.update({ "id" : userId, "serieResult.id": elementRefId }, 
         { $set:{ 
          "serieResult.$.unit"  : receivedResult.unit, 
          "serieResult.$.value"  : receivedResult.value, 
         },{upsert: true}, function(err){ 
          if(err){ 
           callback("Cant update doc: " + err); 
          } 
          else{ 
           console.log("in else (2)"); 
           callback("Success"); 
          } 
        }); 
       } 
      }); 
     } 
    } 
} 
+0

클라이언트 코드에서 이것을 어떻게 호출합니까? cURL로 이것을 재현 할 수 있습니까? –

+0

아약스 (jquery get json)는 Google 크롬 디벨로퍼 도구에서 쿼리를 검사했기 때문에 한 번만 호출됩니다. – guiomie

+1

사용자 이름/프로젝트 이름을 [email protected]로 전자 메일로 보내 주시면이 문제를 디버그하도록 도와 드릴 수 있습니까? –

답변

1

이 방해 한 Cloud9 프록시에 문제가 있었다. 이 문제 덕분에 문제가 해결되어 해결되었습니다.

+0

자신과 cloud9ide 덕분에 돌아서. – guiomie

관련 문제