Http Route вызывается несколько раз - PullRequest
0 голосов
/ 11 марта 2012

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

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

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

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

Третье редактирование: я также использую EveryAuth для сеанса / аутентификации с помощью Facebook.

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

1 Ответ

1 голос
/ 23 марта 2012

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

...