web-dev-qa-db-fra.com

Comment envoyer une réponse http d'erreur dans express/node js?

Donc, dans la page de connexion, j'envoie des informations d'identification d'angulaire à exprimer via une requête get. fonction de réponse d'erreur angulaire mais mon code ne fonctionne pas.

Contrôleur angulaire:

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

Manette:

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

                //
            }


        });


}
10

Dans Node, vous pouvez utiliser res.status() pour envoyer l'erreur:

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

Dans Angular, vous pouvez l'attraper dans la réponse à la promesse:

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

Ou utilisez une instance de la classe Error

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