使用 Firebase 检索多查询
Retrieving Multi-Query with Firebase
我正在尝试为我的用户创建一个对话室节点。我的节点具有 from
和 to
用户 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=]
如果您不喜欢这种方法,则需要以不同的方式构建数据库以创建简单的查询
我正在尝试为我的用户创建一个对话室节点。我的节点具有 from
和 to
用户 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=]
如果您不喜欢这种方法,则需要以不同的方式构建数据库以创建简单的查询