Firebase firestore安全规则中的列表类型安全
在我的firestore安全规则中,我希望有一个规则,检查列表中的所有元素是否都是字符串类型 我的“用户”文档有一个名为“朋友”的字段。它是一个字符串列表,表示其他用户文档的DocumentID。 以下是我目前的规则: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
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
。您可能还想查看我关于安全规则类型的视频。谢谢,我编辑了原始问题并观看了视频。:)