首页 > 解决方案 > 如何在基于 Firebase 查询的规则中按包含字符串的 orderByChild 进行过滤

问题描述

我想获取所有作为登录用户朋友的用户。这是我的数据结构。

{
  "users": {
    "UID1":{
        "name":"Pepito",
        "friends":{
            "UID2":true,
            "UID4":true,
        }
     }
     ...
  }
}

我正在使用此代码获取用户

Firebase.database.reference().child("users")
        .orderByChild("friends/" + Firebase.user.uid).equalTo(true)

规则应该是

{
  "rules": {
    "users" : {
      ".read" : "query.orderByChild.contains('friends/')",
      "$uid" : {
            ".write": "auth.uid == $uid",
      }
    }
  }
}

但是规则不起作用,当我尝试保存时出现此错误

Error saving rules – Line 6: Invalid property access: target is not an object.

第 6 行是

".read" : "query.orderByChild.contains('friends/')",

我也试过

".read" : "query.orderByChild == 'friends/'+auth.uid",

标签: javascriptfirebasefirebase-realtime-databasefirebase-security

解决方案


推荐阅读