2017-10-03 1 views
1

내가 세션 변수 세트 저장하려고 :집합 또는 다른 데이터 구조를 표현 세션에 세션 변수로 저장할 수 있습니까?

   var rowLength = result.rows.length; 
       var setOfPermissions = new Set(); 
       for (var i = 0; i < rowLength; i++) { 
        var permission = result.rows[i].permission; 
        setOfPermissions.add(permission); 
       } 

       req.session.permissions = setOfPermissions; 

하지만 나중에 내가 그것을 액세스하려고 할 때에 :

var setOfPermissions = req.session.permissions; 
    if(setOfPermissions.has('my permission')) //Error over here 

내가받을 다음과 같은 오류 :

TypeError: setOfPermissions.has is not a function

편집 : console.log의 출력 ("권한 :::"+ setOfPermissions);

permissions:::[object Object]

+0

'console.log (typeof req.session.permissions)'는 if 문의 바로 위에 있습니까? 그것은 마치 객체로 변환되는 것처럼 보입니다. – agm1984

+0

@ agm1984 그것은 인쇄합니다 : permissions ::: [object Object] –

+0

모든 것이 잘 보입니다. 난 당신이 설정 초기화 전에 가치를 확인하려고 생각합니다. – Jehy

답변

1

세션이 JSON에 저장됩니다, 그래서 당신이 세션 객체에 대한 설정을 할당 할 때, 그것은 JSON로 전송됩니다, 그리고 당신이 그것을 검색에 액세스 할 때 JSON이 객체에 구문 분석됩니다 이다 그런데 배열에는 has() 메서드가 없습니다.

+0

그러면 JSON을 다시 Set으로 변환 하시겠습니까? –

+0

왜 그렇게하고 싶습니까? 내 요점은, 세션은 사용자 ID, 사용자 이름 등과 같은 간단한 데이터 만 저장해야한다는 것입니다. –

+0

권한 집합과 같은 관련 데이터 집합을 사용하면 쉽게 확인할 수 있습니다. 그렇지 않으면 다른 방법으로 확인해야합니다. 그것의 다만 사정의 사정. –

관련 문제