Firebase firestore安全规则中的列表类型安全

Firebase firestore安全规则中的列表类型安全,firebase,google-cloud-firestore,firebase-security,type-safety,Firebase,Google Cloud Firestore,Firebase Security,Type Safety,在我的firestore安全规则中,我希望有一个规则,检查列表中的所有元素是否都是字符串类型 我的“用户”文档有一个名为“朋友”的字段。它是一个字符串列表,表示其他用户文档的DocumentID。 以下是我目前的规则: function userIsAuthenticated() { return request.auth != null; } match /users/{userID} { function resourceIsValidUser() { return di

在我的firestore安全规则中,我希望有一个规则,检查列表中的所有元素是否都是字符串类型

我的“用户”文档有一个名为“朋友”的字段。它是一个字符串列表,表示其他用户文档的DocumentID。 以下是我目前的规则:

function userIsAuthenticated() {
  return request.auth != null;
}

match /users/{userID} {

  function resourceIsValidUser() {
    return displayNameIsValid();
  }

  function displayNameIsValid() {
    return request.resource.data.displayName is string &&
      request.resource.data.displayName.size() > 0 &&
      request.resource.data.displayName.size() < 17;
  }

  function photoUrlIsValid() {
    return request.resource.data.photoUrl is string;
  }

  function friendsIsValid() {
    return request.resource.data.friends is list;
  }

  function userIsUserOwner() {
    return request.auth.uid == userID;
  }

  allow read: if userIsAuthenticated();
  allow write: if
    userIsAuthenticated() &&
    resourceIsValidUser() &&
    userIsUserOwner();

}
函数userIsAuthenticated(){
return request.auth!=null;
}
匹配/users/{userID}{
函数resourceIsValidUser(){
返回displayNameIsValid();
}
函数displayNameIsValid(){
return request.resource.data.displayName为字符串&&
request.resource.data.displayName.size()>0&&
request.resource.data.displayName.size()<17;
}
函数photoUrlIsValid(){
return request.resource.data.photoUrl为字符串;
}
函数friendsIsValid(){
return request.resource.data.friends为列表;
}
函数userIsUserOwner(){
return request.auth.uid==userID;
}
允许读取:如果userIsAuthenticated();
允许写入:如果
userIsAuthenticated()&&
resourceIsValidUser()&&
userIsUserOwner();
}

有什么我可以添加到
friendsIsValid()
函数以确保好友列表只包含字符串值吗?

目前没有检查数组中所有元素类型的函数。因为也没有方法迭代数组,所以现在唯一可以做的就是预测数组的大小并单独检查每个元素,例如
array[0]是string&&array[1]是string
,等等


Firebase团队知道一些规则可能需要这样做。如果您使用Firebase支持,这将有助于将问题升级。

我刚刚注意到“数组”甚至不是受支持的类型标识符,因此我的代码无效。我应该用什么来代替呢?如果要检查某个东西是否是数组,请使用
is list
。您可能还想查看我关于安全规则类型的视频。谢谢,我编辑了原始问题并观看了视频。:)