我正在构建一个像市场这样的应用程序。我数据库中的每个项目都有一个valid_until属性,因此我不希望在查询中返回无效(如过期)的项目。但是,根据firestore的文档,我的第一个orderBy必须与我的范围比较相同。
所以当我这样做时
ref,collection('products').orderBy('valid_until', 'desc').where('valid_until', '>=', Date.now()).limit(20)
,我得到了正确的结果,但是例如,我无法按价格订购。
我也尝试做
ref .collection("products").orderBy("valid_until", "desc").endBefore(moment().subtract(7, "days").valueOf()).limit(20)
,它也可以给我正确的结果,但是在排序方面存在相同的问题。每个项目的有效期为7天,因此减去瞬间。
我还没有尝试过的另一种选择是安排一个具有Firebase功能的任务,以每天删除过期的产品,因此我不必担心查询无效的产品。
有人有什么想法吗?我想我可能在这里错过了一些东西。我想在这些产品中建立一些查询,例如orderBy价格,valid_until,折扣等等。因此,我觉得这条“ where”语句阻止了所有其他查询的发生。