Как отправить ответ http ошибки в express / node js?

поэтому на странице входа в систему я отправляю учетные данные из angular, чтобы выразить через get запрос.Что я хочу сделать, так это то,что если найдено в базе данных, отправьте ответ и обработайте его в angular else, если не найдено в 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 ответов


в узле вы можете использовать res.status() для отправки ошибки:

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

в угловом вы можете поймать его в ответе обещания:

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

или используйте экземпляр Error класс

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