2017-10-08 1 views
0

Firestore에서 옵션 속성을 수행하는 방법을 알 수 없습니다. 그것은 문서에서 다루지 않는 것 같아 다음 날 실패합니다.Firestore에서 옵션 속성을 입력하는 방법

service cloud.firestore { 
    match /databases/{database}/documents { 
    function maybeString(val) { 
     return val == null || val is string 
    } 

    match /myCollection/{document} { 
     function mySchema() { 
     return request.resource.data.name is string 
      && maybeString(request.resource.data.optionalProp); 
     } 

     allow read: if request.auth != null; 
     allow create, update: if mySchema(); 
    } 
    } 
} 


service cloud.firestore { 
    match /databases/{database}/documents { 
    match /myCollection/{document} { 
     function mySchema() { 
     return request.resource.data.keys().hasAll(['name']) 
      && request.resource.data.name is string 
      && request.resource.data.optionalProp is string; 
     } 

     allow read: if request.auth != null; 
     allow create, update: if mySchema(); 
    } 
    } 
} 

답변

0

나는 두 번째 솔루션을 사용하고 있지만 'fieldName' in resource.data.keys()를 사용하여 optionalProp의 존재를 확인해야합니다

service cloud.firestore { 
    match /databases/{database}/documents { 
    match /myCollection/{document} { 
     function mySchema() { 
     return request.resource.data.keys().hasAll(['name']) 
      && request.resource.data.name is string 
      && (
      ! ('optionalProp' in request.resource.data.keys()) 
      || request.resource.data.optionalProp is string 
     ); 
     } 

     allow read: if request.auth != null; 
     allow create, update: if mySchema(); 
    } 
    } 
} 
관련 문제