如何在express / node js中发送错误http响应?

时间:2016-03-08 09:51:59

标签: angularjs node.js express get

所以在登录页面我通过获取请求从angular发送凭据。我想做的是,如果在数据库中找到,发送响应并在角度中处理它如果没有在db中找到我希望express发送错误响应并处理它的角度误差响应函数,但我的代码不起作用。

角度控制器:

myapp.controller('therapist_login_controller', ['$scope' ,'$localStorage','$http', 
  function ($scope,  $localStorage,$http) {


        $scope.login=function(){

        console.log($scope.username+$scope.password);

        var data={
            userid:$scope.username,
            password:$scope.password
        };

        console.log(data);


            $http.post('/api/therapist-login', data)
                         .then(
                             function(response){
                               // success callback
                               console.log("posted successfully");
                                $scope.message="Login succesful";

                             }, 
                             function(response){
                               // failure callback,handle error here
                               $scope.message="Invalid username or password"
                               console.log("error");
                             }
                          );



        }

  }]);

APP.js:

app.post('/api/therapist-login',therapist_controller.login);

控制器:

module.exports.login = function (req,res) {

        var userid=req.body.userid;
        var password=req.body.password;
        console.log(userid+password);

        Credentials.findOne({
            'userid':[userid],
            'password':[password]
        },function(err,user){
            if(!user){
                console.log("logged err");
                res.status(404);//Send error response here
enter code here
            }else{
                console.log("login in");

                //
            }


        });


}

2 个答案:

答案 0 :(得分:20)

在Node中,您可以使用res.status()发送错误:

return res.status(400).send({
   message: 'This is an error!'
});

在Angular中,您可以在promise响应中捕获它:

$http.post('/api/therapist-login', data)
    .then(
        function(response) {
            // success callback
            console.log("posted successfully");
            $scope.message = "Login succesful";

        },
        function(response) {
            // failure callback,handle error here
            // response.data.message will be "This is an error!"

            console.log(response.data.message);

            $scope.message = response.data.message
        }
    );

答案 1 :(得分:0)

或使用Error

的实例
response.status(code).send(new Error('description'));