在我的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();
}
我可以添加任何内容到friendsIsValid()
函数中以确保friends-list仅包含字符串值吗?
答案 0 :(得分:2)
当前没有检查数组所有元素类型的函数。由于也没有办法迭代数组,因此您现在唯一能做的就是预测数组的大小并单独检查每个元素,例如array[0] is string && array[1] is string
等。
Firebase团队意识到某些规则可能需要这样做。如果您file a feature request获得Firebase支持,这将有助于升级。