路径中的 Firestore 规则变量与数据比较

Firestore rules variable in path compare to data

我想将路径中的变量与文档中的条目进行比较。我建立以下规则:

match /{userId}/test/{cycle}/results {
  //allow read: if 3 == get(/databases/$(database)/documents/$(userId)/status).data.number
  allow read: if cycle == get(/databases/$(database)/documents/$(userId)/status).data.number
}

注释掉的行完美运行,这意味着我路径中的 {cycle} 变量有效并且传输了正确的数字但是当我想将循环变量与数据库中的数字进行比较时它不起作用.

我可以将字符串与数字或类似的东西进行比较吗???

谢谢!!

我可以自己解决。问题是我将字符串与数字进行了比较。请求以字符串形式传递的路径,它还将 {cycle} 变量定义为字符串。我将它与我的数据库中的数据进行了比较,这是一个数字...

解决方法,把数字转成字符串

match /{userId}/test/{cycle}/results {
  allow read: if cycle == string(get(/databases/$(database)/documents/$(userId)/status).data.number)

}

更多:https://firebase.google.com/docs/reference/rules/rules.String