2017-11-30 13 views
1

Cloud Firestore 보안 규칙을 실험하고 있습니다. 문서 필드를 필터링 할 수 있습니까? 예를 들어보안 규칙을 사용하여 문서의 필드를 필터링하는 방법

은 문서 후 일부 사용자가 이메일 주소로 문서를 얻을 수 없습니다

{ 
    name: "John Doe", 
    email: "[email protected]" 
} 

에게있는 경우. 이들 응용 프로그램은

firebase.firestore.doc('users/doe-uid') 

와 문서를 요청하고이 문서

{ 
    name: "John Doe", 
} 

예라면 어떻게 얻을?

나는 (강조 광산 임) Cloud Firestore Security Rules Reference 첫 번째 문장에서 말한다 있기 때문에 가능해야한다고 생각 :

클라우드 경우 FireStore 보안 규칙이 읽기 누가 결정에 저장 컬렉션과 문서에 대한 액세스를 작성하는 데 사용된다 Cloud Firestore, 문서 구성 방법 및 포함 된 필드 및 값.

그러나 필드를 필터링하는 방법을 알려주는 참조에서 아무것도 찾을 수 없습니다.

답변

2

Firestore 규칙은 필터가 아니며 문서 쿼리에 대한 서버 쪽 유효성 검사입니다. 특정 필드가 아닌 전체 문서에 액세스하거나 그렇지 않은 것입니다.

당신이 언급 한 문서는 필드에 대한 데이터 검증을 할 수 있음을 의미합니다.

match /articles/{articleId} { 
    allow read: if resource.data.isPublished == true; 
} 
: 여기
match /users/{userId} { 
    allow write: if request.resource.data.age is int; 
} 

은 ( resource.data 통해) 판독 질의를 검증하기 위해 기존의 필드를 사용하는 다른 기본 예이다 : 여기 은 ( request.resource.data 통해) 기록 쿼리 데이터 검증 규칙의 기본적인 예이다

필드를 필터링하려면 쿼리 후 클라이언트 측에서 수행해야합니다.

이제 특정 필드에 대한 액세스를 보호하려면 다른 규칙 세트를 사용하여 다른 컬렉션 (subcollections 참조)을 만들고 이러한 규칙과 일치하는 다른 쿼리를 만들어야합니다.

+0

나는 이것을 받아 들여 두 개의 문서에서 공개 및 개인 데이터를 분리했으며 현재는 작동 테스트를 전개했습니다. 나는 여전히 문서가 오도 된 것이라고 생각한다. 그러나 그것은 삶입니다. 빨아서 계속해라. – nalply