因此,我在用户文档中添加了一个名为numberOfFollowers
的新字段,因此,新用户将拥有此字段,而旧用户则没有此numberOfFollowers
字段。
在安全规则中,我要设置numberOfFollowers
应该是数字。并且如果旧用户没有此字段,则仍然允许更新其文档。
所以我这样设置安全规则
match /users/{userID} {
allow update: if isValidUserStructure(request.resource.data)
}
function isValidUserStructure(user) {
return (user.numberOfFollowers is number || user.numberOfFollowers == null)
&& user.banned is bool
&& user.contactNumber is string
&& user.createdAt is timestamp
&& user.domicile is string
&& user.email is string
}
但是由于此行(user.numberOfFollowers is number || user.numberOfFollowers == null)
答案 0 :(得分:0)
要检查某个文档中是否没有字段,您应该使用记录在案的in
操作来检查密钥是否存在,该数据对象是Map类型的对象:
function isFieldPresent(data, fieldName) {
return fieldName in data;
}
然后您可以选择在这种情况下要做什么。
由于null是Firestore中的有效字段值,因此像现在这样检查null绝对不同于检查不存在。