目標是檢查用戶是否已登錄。加載頁面時,使用承諾檢查當前用戶。如果用戶未登錄,則服務器返回{}
。我的問題是,我不知道如何檢查承諾是否會返回空對象{}
。如何檢查承諾是否返回空對象
我定義的資源:
myapp.factory('User', function($resource) {
return $resource('/users/:userId', {userId: '@id'}, {
current: {method:'GET', params: {userId: 'current'}}});
});
其在resolve屬性用於UI的路由器。該解決方案用於向我的控制器提供數據。
resolve: {
user: ['User', function(User) {
return User.current();
}]
},
controller : function($scope, $window, user) {
$scope.user = user;
$scope.userLoggedIn = !isEmptyObject(user);
function isEmptyObject(obj) {
console.log(obj);
var name;
for (name in obj) {
return false;
}
return true;
}
}
快遞服務器端被定義爲:
app.get('/users/current', function(req, res) {
console.log(req.isAuthenticated());
console.log(req.user);
if (req.isAuthenticated()) {
res.send(req.user);
} else {
console.log("Not Authenticated");
res.send({});
}
});
的問題是,isEmptyObject
函數總是返回true。
你正在解決'用戶',但注入'用戶'在控制器(這將是'undefined')? –
是不是更容易從服務器返回對象的屬性像'{notLoggedIn:true}' – charlietfl