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