Firebase Firestore规则:数据为数字时条件检查失败
下面是一个示例规则,当条件中使用的文档字段的数据类型为number时,该规则将失败-Firebase Firestore规则:数据为数字时条件检查失败,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,下面是一个示例规则,当条件中使用的文档字段的数据类型为number时,该规则将失败- match message_box/{user_id}/inbox { allow read: if get('..../users/$(request.auth.uid)).data['user_id'] == user_id } 此规则总是失败,因为在数据中字段值是number,但在路径变量{user_id}中它被捕获为string 以下两个测试验证了这是一个实际问题- 在规则中,通过在比较的
match message_box/{user_id}/inbox {
allow read: if get('..../users/$(request.auth.uid)).data['user_id'] == user_id
}
此规则总是失败,因为在数据中字段值是number,但在路径变量{user_id}中它被捕获为string
以下两个测试验证了这是一个实际问题-
有什么简单的方法让它顺利运行吗?在规则文档中找不到将int转换为string的方法。引用了此问题 如果将来有人遇到这种情况,请查看以下有关转换Firestore规则中数据类型的文档: 示例:
int("2") == 2
int(2.0) == 2
string(true) == "true"
string(1) == "1"
string(2.0) == "2.0"
string(null) == "null"