使用 Firebase 检索多查询

Retrieving Multi-Query with Firebase

我正在尝试为我的用户创建一个对话室节点。我的节点具有 fromto 用户 ID。在创建新房间之前,我需要检查两种情况,其中 'from' 是主机,to 是对手' & 'to' 是主机,'from' 是对手。

节点看起来像:

 - Rooms
    - "id1"
      - from: 2
      - to: 1

我想做的基本上是:

Select 全部来自 from = 1 and to = 2 OR from = 2 and to = 1

有没有办法在一个查询中同时检查这两种情况?我对使用 Firebase 进行复杂查询数据的本质理解很困惑。

在 firebase 中没有直接查询两个不同子项的方法,子项查询的唯一方法是:

 myRefToRooms.orderByChild('from').equalTo($user_id)

也就是说,您可以在每个房间中创建一个使用两个 uid 创建的查询子项:

 rooms:{
  $room_id:{
    from:$user_from,
    to:$user_to,
    query:$userfrom_$userto
  }
 }

这样你就可以获得符合这两个条件的所有值

myRefToRooms.orderByChild('query').equalTo($user1_$user2)

您还可以在查询中使用 startAt() 和 endAt() 方法,不仅可以找到完全匹配的房间,还可以找到具有相同 "from user" 的所有房间或具有相同 [= 的所有房间24=]

如果您不喜欢这种方法,则需要以不同的方式构建数据库以创建简单的查询