如何在Firebase Firestore中使用查询

时间:2019-02-12 15:46:33

标签: android node.js firebase google-cloud-firestore

我正在使用Firebase函数和Firebase Firestore开发用于存储用户数据的API。

我想使用存储在文档字段中的属性来查找文档。 This是Firebase文档,其中说明了如何实现这一目标。

// Create a reference to the cities collection
var citiesRef = db.collection('cities');

// Create a query against the collection
var queryRef = citiesRef.where('state', '==', 'CA');

我想处理两种情况

  1. 没有符合条件的文件

  2. 当前条件超过两个的文档

如何处理以上两种情况?

2 个答案:

答案 0 :(得分:2)

根据上面的评论中的“讨论”,在Cloud Function中,您可以使用QuerySnapshot方法返回的get()进行以下操作:

admin.firestore().collection("cities")
    .where('state', '==', 'CA')
    .get()
    .then(querySnapshot => {
        if (querySnapshot.size == 0) {
            console.log("0 documents");
        } else if (querySnapshot.size > 2) {
            console.log("More than 2 documents");
        } 
    });

如上所述,请注意,这将花费阅读集合中每个文档的成本。如果您有一个非常大的集合,则可以编写一个Cloud Function,每次在该集合中添加文档或从中删除文档时都会更新计数器。

答案 1 :(得分:0)

接受的答案没有显示如何从每个文档中提取数据,imo 只是答案的一半。以下内容将使您遍历每个文档并提取数据。

db.collection("cities").get().then(function(querySnapshot) {
    querySnapshot.forEach(function(doc) {
        // doc.data() is never undefined for query doc snapshots
        console.log(doc.id, " => ", doc.data());
    });
});