2016-03-08 12 views
5

So in Anmeldeseite Ich sende Credentials von eckig zu Express durch Anfrage erhalten.Was ich tun möchte, ist, dass, wenn in der Datenbank gefunden, senden Antwort und behandeln es in eckigen sonst wenn nicht in db gefunden Ich möchte Express senden Fehlerantwort und Handle es eckige Fehlerreaktionsfunktion, aber mein Code funktioniert nicht.Wie man Fehler http Antwort in Express/Knoten js senden?

Winkelregler:

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

Controller:

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

       // 
      } 


     }); 


} 
+1

Verwenden 'res.send ("angemeldet err", 404);' – MiTa

+0

Reaktion [ 'status_code'] = status_code; Antwort ['Nachricht'] = status_message; Antwort ['error_message'] = error_message; Rückgabe res.jsonp (Antwort); –

+0

Welcher Aspekt des Codes funktioniert nicht? Erhalten Sie den Status der Antwort, aber keine Fehlermeldung? Kann der Error-Handler für das Versprechen "$ http" nicht funktionieren? Sie erhalten schnell Antworten, wenn Sie Klarheit über das Problem geben könnten. – gnerkus

Antwort

8

In Knoten können Sie res.status() verwenden, um die Fehler zu senden:

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

In Angular Sie es in dem Versprechen Antwort fangen:

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

Sehr hilfreich, danke! –

Verwandte Themen