在Firebase数据库中,我有一个预订列表。
每个预订作为以下结构
{
userUid: string,
status: string,
moreStuff: {
....
}
}
我需要选择与某个用户相关的所有预订(即 userUid 等于用户的 uid ,应用程序已知)具有特定状态(例如status = confirmed
)。
我可以使用以下查询选择属于特定用户的预订
db.list('bookings', {
query: {
orderByChild: 'userUid',
equalTo: user.uid
}
})
但我不知道是否可以添加额外的选择条件,例如status = confirmed
答案 0 :(得分:1)
在firebase查询中,您无法在多个字段上进行过滤。我多次遇到过这种限制。
如果您对数据进行不同的建模,我认为您的挑战会变得更轻松。我相信用户和预订之间存在一对多的关系。也就是说,用户可能有很多预订,但预订可能只有一个用户。如果是这种情况,我会创建一个顶级节点“bookingLists”,其中包含每个用户的单独预订列表。结构如下所示。路径“bookingList /< userId>”包含给定用户的预订列表。如果您知道userId,则可以访问该列表。它将包含该用户的所有预订。然后,您可以查询每个预订中的单个字段以进行过滤。
bookingLists
<userId>
bookings
<bookingKey>
status
...other fields
如果您需要进一步过滤预订,可以使用可观察的操作地图和过滤器在客户端进行过滤。只要每个用户没有太大的预订列表,这将扩展。