首页 > 解决方案 > 如何为数据列表编写 Firebase RealtimeDatabase 规则?

问题描述

这是我的数据库结构:

{
  users: {
    "userA": {
        //data
    },
    "userB": { 
        //data
    }
  },
  groups: {
    "groupA": {
      users: {
        "userA": true,
        "userC": true
      },
      //data
    }
  }
}

如您所见,userA 和 userB 都可以访问 groupA。

我想查询用户有权访问的所有组的列表:


const user = firebase.auth().currentUser
firebase
  .database()
  .ref('/groups')
  .orderByChild(`users/${user.uid}`)
  .equalTo(true)
  .once('value', (v) => {
    console.log(v.val())
  });

如何保护我的数据库?

目前,我的规则如下所示:

{
  "rules":{
    "groups": {
      ".read": "query.orderByChild == 'users/' + auth.uid"
    }
  }
}

但我收到一个错误:

无效的 == 表达式:与排序进行比较时,右操作数必须是排序或字符串文字。

标签: javascriptfirebasefirebase-realtime-databasefirebase-security

解决方案


推荐阅读