Firestore安全规则如何校验字符串长度?key.length不生效怎么解决
问题原因
Firestore安全规则在解析路径通配符捕获的参数时,如果参数值可被解析为整数类型,会自动转换为number类型而非string类型。数字类型没有length属性,调用length会导致规则判定失败,这就是你写的长度校验不生效的核心原因。
而你用==做精确匹配的时候,Firestore规则的相等判定会自动做类型隐式转换,比如数字123和字符串"123"会被判定为相等,所以这条规则可以正常运行。
修复方案
在获取长度前先将参数强制转换为字符串类型,调用规则内置的string()方法即可:
// 可正常运行的长度校验规则 match /queue/{key} { allow read: if string(key).length > 12; }
内容的提问来源于stack exchange,提问作者0xFF
相关产品推荐
相关产品推荐

