gpt4 book ai didi

firebase - 如何查询 Cloud Firestore 中不存在的文档键

转载 作者:行者123 更新时间:2023-12-02 10:55:40 25 4
gpt4 key购买 nike

假设我有一个带有一些可选属性的数据模型。例如,这可以是具有“名字”、“姓氏”和可选“网站”属性的用户对象。

在 Cloud Firestore 中,只有具有已知网站的用户文档才会设置“网站”属性,对于所有其他用户文档,此属性将不存在。

我现在的问题是,如何查询所有没有“网站”属性的用户文档?

最佳答案

文档可以包含具有 null 值数据类型的属性(请参阅 data types documentation )。然后,您可以构建一个查询来限制 website 属性为 null 的结果。

这与缺失属性不太一样,但如果您使用 custom objects要将数据写入 Firestore,空属性将自动保存为 null,而不是根本不保存。您还可以手动/以编程方式将 null 值写入数据库。

在 Android 中,我使用以下方法对此进行了测试:

FirebaseFirestore.getInstance().collection("test").whereEqualTo("website", null).get();

我的数据库结构如下:

example firestore structure

这仅返回文档 inuwlZOvZNTHuBakS6GV,因为文档 9Hf7uwORiiToOKz6zcsXwebsite 属性中包含一个字符串值。

我相信您通常使用 Swift 进行开发,不幸的是,Swift 不支持自定义对象,但您可以使用 NSNull()null 值写入 Firestore。例如(我不精通 Swift,所以请随意纠正任何问题):

// Writing data
let docData: [String: Any] = [
"firstname": "Example",
"lastname": "User",
"website": NSNull()
]
db.collection("data").document("one").setData(docData) { err in
if let err = err {
print("Error writing document: \(err)")
} else {
print("Document successfully written!")
}
}

// Querying for null values
let query = db.collection("test").whereField("website", isEqualTo: NSNull())

文档没有提到查询不存在的值的方法,因此这似乎是下一个最佳方法。如果有人可以改进或提出替代方案,请这样做。

关于firebase - 如何查询 Cloud Firestore 中不存在的文档键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46806860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com