2012-03-11 4 views
0

Когда в выражении вызывается следующий маршрут, он фактически выполняется 6 раз. Консоль.log печатается 6 раз, и моя логика мангуста выполняется 6 раз (экономит 6 раз в базе данных).Http Route называется несколько раз

Затем я получаю http 500 из cloud9ide «Не могу прокси-запрос». Я действительно смущен, у меня нет кодов в моем коде, как это может произойти? Console.log ("in else (2)"); печатайте 6 раз.

Редактировать: Я пробовал код mongooseLogic с комментариями различных частей, и проблема все еще была там. Похоже, это не проблема мангуста.

Второе редактирование: я изменил сообщение для получения и жестко закодированного тела, которое будет отправлено, и маршрут был выполнен только один раз.

Третья редакция: Я также использую everyauth для сеанса/аутентификации с помощью facebook oauth.

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'}); 
    } 
}); 

код на файл mongooseLogic:

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

Это ajax (jquery get json), он вызывается только один раз, потому что я проверил запрос в инструментах разработки Google Chrome. – guiomie

+1

Можете ли вы отправить свое имя пользователя/название проекта на [email protected], чтобы мы могли отладить это? –

ответ

1

Это была проблема с прокси-сервером Cloud9, что вмешалась. Проблема была решена благодаря этой проблеме и была решена.

+0

Благодаря себе и cloud9ide для поворота. – guiomie

Смежные вопросы