Select 从 Firebase 数据库使用多个 where 条件

Select from Firebase database using more than one where conditions

在 Firebase 数据库中,我有一个 Bookings.

的列表

每个Booking如下结构

{
   userUid: string,
   status: string,
   moreStuff: {
     ....
   }
}

我需要 select 与特定用户关联的所有预订(即其 userUid 等于 uid具有特定状态(例如 status = confirmed)的应用程序已知的用户)。

我可以使用以下查询select属于特定用户的预订

db.list('bookings', {
        query: {
            orderByChild: 'userUid',
            equalTo: user.uid
        }
    })

但我不知道是否可以添加额外的 select 条件,例如status = confirmed

在 firebase 查询中,您不能过滤多个字段。我多次遇到这个限制。

我认为如果您以不同的方式对数据建模,您的挑战会变得更容易。我相信您在用户和预订之间存在一对多关系。也就是说,一个用户可能有很多预订,但一个预订可能只有一个用户。如果是这种情况,我会创建一个顶级节点 "bookingLists",其中包含每个用户的单独预订列表。结构如下图所示。路径 "bookingList/< userId >" 包含给定用户的预订列表。如果您知道用户 ID,则可以访问该列表。它将包含该用户的所有预订。然后,您可以查询每个预订中的单个字段以进行过滤。

bookingLists
  <userId>
     bookings
        <bookingKey>
            status
            ...other fields

如果您需要进一步过滤预订,您可以使用可观察操作映射和过滤器在客户端进行过滤。这将扩展,只要每个用户没有太大的预订列表。