2014-01-03 3 views
0

возвращает нулевой объект данных моему угловому контроллеру и допрашивает его там, где указывается «нет пользователя», как показано ниже. Кажется, что Mongoose или мой собственный API должны хотя бы вернуть {}, который я мог бы затем допросить для чего-то конкретного, как data.username.Угловой + Экспресс, какой стандартный способ указать пустой набор результатов?

Конечно, я могу сделать это, но что такое стандарт?

(Express code) 
------------------------------------------------------------------------------------- 
app.get('/api/memberconfirm/:code', function (req, res) { 

    return db.userModel.findOne({'confirmcode': req.params.code}, function (err, data) { 
     if (!err) { 
       return res.send(data); 
     } 
     else { 
       console.log("error"); 
       return something... 
     } 
    }); 
}); 


(Angular code) 
------------------------------------------------------------------------------------------- 
controllerModule.controller('MemberConfirm', ['$scope', '$http', '$routeParams', '$location', 

     function MemberConfirm($scope, $http, $routeParams, $location) { 
      var url = '/api/memberconfirm/' + $routeParams.param1; 

      $http.get(url) 
       .success(function(data, status, headers, config) { 

         /* 
          null means no user found? 
         */ 
         if(data) { 
          $location.path("/login"); 
         } 
         else { 
          $location.path("/memberconfirmfailed"); 
         } 
       }) 
       .error(function(data, status, headers, config) { 
         alert("not ok"); 
         // called asynchronously if an error occurs 
         // or server returns response with an error status. 
       }); 
     } 
]); 
+1

'res.send (404)' может быть? – Daiwei

+0

для входа в систему не удается, я использую 401 Unauthorized – YOU

+0

Это не про вход в систему, это вопрос о том, должен ли нулевой объект (данные) представлять набор результатов 0. –

ответ

1

REST использует коды ответа HTTP, поэтому 404 указывает, что не найден. Также обратите внимание, что Mongoose возвращает null, если ничего не найдено. Он возвращает err за фактические ошибки (например, ошибку БД).

Для серверного кода:

return db.userModel.findOne({...}, function(err, data) { 
    if (err) { /* handle the error */ } 
    else { 
     if (data) { return res.send(data); } 
     else { return res.send(404); } 
    }   
}); 

Для кода на стороне клиента:

$http.get(url) 
    .success(function(data, status, headers, config) { 
     /* found: do stuff */ 
    }) 
    .error(function(data, status, headers, config) { 
     if (status === 404) { /* not found */ } 
     else { /* some other error to deal with */ } 
    }) 
; 
Смежные вопросы