2016-03-08 22 views
5

Quindi nella pagina di accesso sto inviando credenziali da angolare ad espresso tramite richiesta. Quello che voglio fare è che se trovato nel database, inviare risposta e gestirlo in altro angolare se non trovato in db Voglio esprimere per inviare risposta all'errore e gestirlo funzione di risposta all'errore angolare ma il mio codice non funziona.Come inviare la risposta dell'errore http in express/node js?

regolatore angolare:

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

Usa 'res.send ("registrato Err", 404);' – MiTa

+0

risposta [ 'status_code'] = status_code; risposta ['message'] = status_message; risposta ['error_message'] = error_message; return res.jsonp (risposta); –

+0

Quale aspetto del codice non funziona? Ricevi lo stato della risposta ma nessun messaggio di errore? Il gestore degli errori per la promessa '$ http' non funziona. Riceverai rapidamente le risposte se potresti fornire una certa chiarezza sul problema. – gnerkus

risposta

8

Nel nodo è possibile utilizzare res.status() per inviare l'errore:

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

In angolare si può prendere nella risposta promessa:

$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

Molto utile, grazie! –