2013-11-24 5 views
0

목표는 사용자가 로그인했는지 확인하는 것입니다. 페이지가로드되면 약속이 현재 사용자를 확인하는 데 사용됩니다. 사용자가 로그인하지 않은 경우 서버는 {}을 반환합니다. 내 문제는 약속이 빈 개체를 반환하는지 확인하는 방법을 모르겠다. {}.약속이 빈 개체를 반환하는지 확인하는 방법

myapp.factory('User', function($resource) { 
    return $resource('/users/:userId', {userId: '@id'}, { 
    current: {method:'GET', params: {userId: 'current'}}}); 
}); 

UI 라우터에서 해결 속성에 사용됩니다

나는 자원을 정의했다. 이 해결 방법은 내 컨트롤러에 데이터를 제공하는 데 사용됩니다.

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를 반환한다는 것입니다 :로

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

익스프레스 서버 측

정의된다.

+0

컨트롤러에 '사용자'가 있지만 (사용자 정의) '사용자'가 삽입됩니다 ('정의되지 않음')? –

+0

'{notLoggedIn : true} '와 같은 서버에서 객체의 속성을 반환하는 것이 더 쉽지 않을 것입니다. – charlietfl

답변

0

시도 :

function isEmptyObject(obj) { 

     if (obj.length && obj.length > 0) 
      return false;   

     if (obj.length === 0) 
      return true;   
    } 

BTW, underscore.js 플러그인이 소유 한 방법

isEmpty_.isEmpty(object) 

반환 true 오브젝트가 값 (NO 열거 자신의-속성)을 포함하지 않는 경우.

_.isEmpty([1, 2, 3]); 
=> false 

_.isEmpty({}); 
=> true 
+0

좋은 답변입니다. isEmpty를 사용하면 나를 위해 일했습니다! –

+0

이것은 대답이 잘못 되었기 때문에'isEmptyObject' 함수는 빈 객체와 비어 있지 않은 객체 모두에 대해 undefined를 반환합니다. – user902383

관련 문제