Firebase实时数据库-结合多个提取操作?

时间:2019-08-04 19:15:23

标签: javascript firebase firebase-realtime-database

我想为多个用户提供访问权限,以在Firebase Realtime数据库中获取他们有权访问的“消息”。数据库读取读取“ / messages”,并以“作者”和“成员”的身份返回用户有权访问的所有消息的两个集合。

数据库结构如下:

"messages" : {
  "msg_id1": {
    "access": {
      "author": "user-id-1",
      "members": {
        "user-id-2": true
      }
    }
    "data" : {
      "theData": "Hello world!"
    }
  }
}

我创建了以下规则:

{
  "rules": {
    "messages": {
      ".read": "
        auth.uid !== null &&
        query.equalTo === auth.uid
      "
    }
}

对应的数据库查询为:

database.ref("messages")
  .orderByChild("access/author")
  .equalTo(`${user.uid}`)
  .once('value', (snapshot) => {
    snapshot.forEach( (data) => {
      console.log("OWNER", data.val().data.title)
    })
})

database.ref("messages")
  .orderByChild(`access/members/${user.uid}`)
  .equalTo(true)
  .once('value', (snapshot) => {
    snapshot.forEach( (data) => {
      console.log("MEMBER", data.val().message.data.title)
    })
})

我希望最小化两次调用数据库的开销和成本。

是否存在一种将数据库查询优化到单个数据库调用中的聪明方法?

亲切的问候/ K

0 个答案:

没有答案