带有 .where() 的 Firestore 查询可以执行空搜索吗

Posted

技术标签:

【中文标题】带有 .where() 的 Firestore 查询可以执行空搜索吗【英文标题】:Can a Firestore query with .where() perform an empty search 【发布时间】:2018-06-22 19:09:13 【问题描述】:

我正在建立一个网站来上传旧考试,并拥有一堆文档,其中包含教师、年份、班级等字段。这些都存储在云 Firestore 中。我使用 .where("Teacher", "==", teacher) 过滤数据。但是,我希望能够执行一个空查询,以便搜索可以返回多个数学测试,这些测试不一定来自同一位老师。有没有办法用 .where() 运算符来做到这一点,还是我必须分开每个搜索案例?

【问题讨论】:

“空查询”是什么意思?你到底想检索什么? 基本上我希望它返回所有内容,除非另有说明。我通过指定不同的搜索案例(如仅给出字段 A 和 C)解决了这个问题。但是,如果您有更简单的解决方案,我会很想听听它 @MichaelKeller 你找到解决方案了吗?一定有更优雅的解决方案吧? 【参考方案1】:

要获取集合中的所有文档,只需使用get() method on a CollectionReference:

const firestore = firebase.firestore()
const coll = firestore.collection('collection_name')
coll.get().then(querySnapshot => 
    // Iterate querySnapshot.docs here
)

CollectionReference 是 Query 的子类,这意味着 CollectionReference 本身已经是一个没有约束的查询。

【讨论】:

以上是关于带有 .where() 的 Firestore 查询可以执行空搜索吗的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个 firestore 查询需要索引?

Firestore:多个条件 where 子句

如何在Firestore中查询DocumentReference

Firestore where子句不符合条件。

使用'where'的Firestore查询日期范围

如何使用 where 子句从 Firestore 中删除文档