火力基础和查询

Firebase AND query

本文关键字:查询      更新时间:2023-09-26

我想使用 Firebase 选择已经开始但尚未结束的日历活动,或者在未来 6 个月内开始的日历活动。

在伪SQL中,我想要的是:

WHERE `start` < {6 months from now} AND `end` > {now}

问题是,我知道如何获得这些用例之一,但不能同时获得两个用例:

firebase.orderByChild('start').endAt(+new Date() + 15724800000)
firebase.orderByChild('end').startAt(+new Date())

如果我尝试将两者结合起来,则会出现以下错误:

未捕获的错误:Query.orderByChild:不能组合多个 orderBy 调用。

我不想执行两个查询来过滤列表。可能只有几个结果与我想要的查询匹配,但可能有数百万个结果本身与任何一个查询匹配。

https://www.firebase.com/blog/2013-10-01-queries-part-one.html#between

firebase.orderByChild('start')
.startAt(startTime)
.endAt(endTime)
.once('value', function(snap) {
   console.log('messages in range', snap.val());
});