继续获取HTTP响应代码" 1"用于HTTP REQUEST

时间:2014-03-31 05:14:25

标签: javascript angularjs mongodb http express

我试图发一个http请求删除一个帖子一切正常但我回来的响应代码总是" 1"并且我不知道为什么。这会影响我的前端以及错误处理部分。我可能知道为什么会这样吗? the error code

这是我到目前为止所拥有的

注册http请求

app.delete('/channelHandler/channel/:permalink/delete', channelHandler.deleteChannelByPermalink);

路线

执行后我得到"no problem in route"

this.deleteChannelByPermalink = function(req, res, next){
      var permalink = req.params.permalink;
    channels.deleteChannelByPermalink(permalink,function(err, results) {
            "use strict";
            if(err){
            console.log("error in route");
               res.send(400,err);
            }
            console.log("no problem in route");
             res.send(200,results);
        });
}

数据库

执行后我得到"done in database"

    this.deleteChannelByPermalink = function(data, callback){
         "use strict"
            channels.remove({'channelPermalink': data}, function(err, post) {
                "use strict";
                if (err) return callback(err, null);
                callback(err, post);
                console.log("done in database");
            });
    }

前端

//执行后我得到"something is wrong"而不是"LOL"

 $scope.confirm = function(titleform){
     if(titleform === items.currentTitle){
       $http.delete('/channelHandler/channel/'+items.currentPermalink+'/delete').
                        success(function(data){
                          alert("LOL")
                        }).error(function(err){
                           alert("Something is wrong")
                           $scope.errorMessage = err;
                        });
                    $modalInstance.dismiss('cancel');
                    }else{
                      $scope.errorMessage = "Please enter the correct title "
                    }
                  } 

2 个答案:

答案 0 :(得分:2)

您的错误处理控制流程缺少必要的“返回”,这会导致您为同一请求调用res.send两次,这是一个错误。

this.deleteChannelByPermalink = function(req, res, next){
  var permalink = req.params.permalink;
  channels.deleteChannelByPermalink(permalink,function(err, results) {
    "use strict";
     if(err){
       console.log("error in route");
       res.send(400,err);
       //NEED TO RETURN HERE!
       return;
     }
     console.log("no problem in route");
     res.send(200,results);
    });
}

但是,根据你问题中的信息,我不确定这个错误实际上会导致你所看到的行为。但无论如何你需要解决这个问题。否则我在你的片段中看不到任何其他明显的错误。

答案 1 :(得分:1)

这是我犯的一个愚蠢的错误,我很抱歉浪费你的时间。

我犯的错误是我将结果返回到前端,结果包含值" 1"这是数据库部分的结果

 channels.remove({'channelPermalink': data}, function(err, post) {
                "use strict";
                if (err) return callback(err, null);
                callback(err, post); // post contain "1"
                console.log("done in database");
            });

这是我的更正

channels.deleteChannelByPermalink(permalink,function(err, results) {
            "use strict";
            if(err){
            console.log("error in route");
               res.send(400,err);
               return;

            }
            console.log("no problem in route");
             // res.send(200);  instead of res.send(200,results)
             return;
        });