Firestore查询文档的字段ID

时间:2020-08-16 19:05:12

标签: javascript firebase google-cloud-firestore

我正在尝试对字段ID进行查询过滤。我想返回所有包含字段ID的文档,然后返回其值。

enter image description here

在此示例中,我想做类似的事情:

db.collection("assistencia").where(">>> 0qSzBxVimwRlurLHNzXp EXIST <<<<") <=== I don't know what I need to put here
.get()
.then(function(querySnapshot) {
    querySnapshot.forEach(function(doc) {
        // doc.data() is never undefined for query doc snapshots
        console.log(doc.id, " => ", doc.data());
    });
})

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

Firestore不提供任何查询来检查字段是否存在。您的数据模型应考虑到这一事实。

如果要检查其他字符串中是否有字符串,则可以添加列表字段,并使用包含数组的查询来查找列表中该字符串存在的文档。如果该字段名为“ items”:

db.collection("assistencia").where("items", "array-contains", "0qSzBxVimwRlurLHNzXp")

随后,您将获得包含所需数据的文档,并且可以在其他字段中查找所需文档中的值。

答案 1 :(得分:0)

我会非常直言不讳:您不仅在使用Firestore时出错,而且在任何数据库上也出错。

如前所述,Firestore不提供任何查询来检查字段是否存在。但是,这并不意味着您无法查询具有字段的文档。

Firestore也没有“通配符”,但这并不意味着您无法查询所有值...

因此:当您查询字段时,Firestore将 返回具有字段的文档。

此外:您可以使用“大于”查询,其值为NULL- 任何 值都大于NULL。

因此要获取 具有 字段“ Retard”

的所有文档
db.collection("assistencia").where("Retard", ">", /000)

这将返回该集合中的 所有 个文档,这些文档具有一个具有非空值的“延迟”字段。 非常不推荐 使用此技术。它不会缩放。我 曾经做过这样的事情,一次是从一个数据结构到另一个数据结构的极度hacky传输-从来没有面向客户端。

获取具有“ Retard”特定值的所有文档

db.collection("assistencia").where("Retard", "==", "0qSzBxVimwRlurLHNzXp")

您只能按照设计的使用方式来使用数据库。