Firebase 如何限制用户可以在firestore角色中创建的文档数量

Firebase 如何限制用户可以在firestore角色中创建的文档数量,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,我尝试使用resource.size,但它不起作用我的规则是这样的 allow create: if request.resource.data.uid == request.auth.uid && request.resource.data.name is string && request.resource.data.phoneNumber is number && request.resou

我尝试使用resource.size,但它不起作用我的规则是这样的

 allow create: if request.resource.data.uid == request.auth.uid &&
        request.resource.data.name is string 
        && request.resource.data.phoneNumber is number
        && request.resource.data.age is number
        && request.resource.data.gander == 'Male'||request.resource.data.gander == 'Female'
        && resource.size() <= 12;
允许创建:if request.resource.data.uid==request.auth.uid&&
request.resource.data.name是字符串
&&request.resource.data.phoneNumber是数字
&&request.resource.data.age是数字
&&request.resource.data.gander==“男性”| | request.resource.data.gander==“女性”

&&resource.size()资源以及request.resource指向文档,而不是集合。
虽然可以对文档路径执行get,但不能对集合执行get

因此,您需要将每个用户创建的患者计数作为一个文档进行维护,例如在/users/uid add字段patientCount中。然后,您可以在安全规则中检查此字段:

function canCreate(uid) {
  var userDoc = get(/databases/$(database)/documents/users/uid);
  return userDoc.data.patientCount < 12;
}

allow create: if canCreate(request.auth.uid);
函数canCreate(uid){
var userDoc=get(/databases/$(database)/documents/users/uid);
返回userDoc.data.patientCount<12;
}
允许创建:如果可以创建(request.auth.uid);
为了维护patientCount,我在中详细介绍了多种方法