相关疑难解决方法(0)

Firestore 规则:当数据为数字时,条件检查失败

以下是当条件中使用的文档字段的数据类型为 number- 时失败的示例规则:

match message_box/{user_id}/inbox {
      allow read: if get('..../users/$(request.auth.uid)).data['user_id'] == user_id
}
Run Code Online (Sandbox Code Playgroud)

此规则总是失败,因为在数据中字段值是数字,但在路径变量 {user_id} 中它被捕获为字符串。

以下两项测试证实这是一个实际问题 -

  1. 在规则中,通过在比较的右侧使用硬编码的整数值(例如data['user_id'] == 456),然后读取成功。或者-
  2. data中,将user_id字段的数据类型设置为string。在这种情况下,本文顶部指定的匹配规则会成功。

有什么简单的方法可以顺利运行吗?在规则文档中没有看到将 int 转换为 string 的方法。

firebase firebase-security google-cloud-firestore

4
推荐指数
1
解决办法
1132
查看次数