2012-03-11 80 views
0

在express中調用以下路由時,實際執行了6次。 console.log被打印6次,並且我的貓鼬邏輯被執行6次(在數據庫中保存6次)。多次調用Http路由

然後我從cloud9ide返回一個http 500「無法代理請求」。我真的很困惑,我的代碼中沒有循環,這怎麼會發生? console.log(「in else(2)」);打印6次。

編輯:我試了mongooseLogic代碼,各部分註釋掉了,問題仍然存在。這看起來不是貓鼬問題。

第二次編輯:我已經更改了發送的內容並硬編碼了要發送的主體,並且路由只執行一次。

第三編輯:我也使用everyauth進行會話/身份驗證與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重現這個嗎? – 2012-03-11 06:21:52

+0

它是一個ajax(jquery get json),它只被調用一次,因爲我已經檢查了google chrome developper工具中的查詢。 – guiomie 2012-03-11 14:29:17

+1

您可以通過電子郵件將您的用戶名/項目名稱發送至[email protected],以便我們幫助您進行調試嗎? – 2012-03-12 18:44:19

回答

1

這是與干擾的CLOUD9代理問題。感謝這個問題,問題得到了解決,並得到解決。

+0

感謝你和cloud9ide的轉身。 – guiomie 2012-03-24 18:34:08