当前位置: 首页 > 知识库问答 >
问题:

如何查询云Firestore中文档的不存在密钥

孙昂然
2023-03-14

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

谢了。

共有1个答案

云弘壮
2023-03-14

文档可以包含具有null值数据类型的属性(请参见数据类型文档)。然后,这将允许您构造一个查询,以限制website属性为null的结果。

这与缺少属性不完全相同,但是如果使用自定义对象将数据写入Firestore,空属性将自动保存为null而不是根本不保存。您还可以手动/编程地将null值写入数据库

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

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

我相信您通常在Swift中开发,不幸的是,在Swift中不支持自定义对象,但是您可以使用nsnull()向FireStore写入null值。例如(我不精通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())

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

 类似资料:
  • 我有一个云Firestore DB,其结构如下: null null 有人能想出一个优雅的解决这个问题的办法吗?

  • 我希望在我的社交应用程序中实现朋友搜索功能。为此,我尝试在DB的“用户”集合中查询每个用户的文档,但它应该排除一些特定文档,例如当前用户已经是朋友的用户或请求待定的用户。 是否可以通过在Firestore中传递这些文档引用ID来查询所有用户文档,不包括特定文档。 如果没有,有人能说一种结构化数据的方法,以便我可以实现这个功能吗?谢谢。

  • 我在使用firestore查询“wherequalto”时遇到了麻烦。我试图从一个名为“参与者”的集合中获取图像,但当文档不存在时,应该使用else语句并移动到更新文档的下一个活动。但是在onComplete侦听器(即任务)中从集合中查询文档时,文档没有退出,而是代码运行到if(Task.issucessful){}中,并且没有使用else语句。我的代码:有谁能帮我吗?谢谢

  • 我想像这样更新文档: 但是,如果doc user\u id不存在,上述代码将抛出错误。因此,如果不存在,如何告诉Firestore创建学生,换句话说,行为如下:

  • 我想在firestore数据库中查询文档id。目前我有以下代码: 我没有结果。但当我查询其他字段时,它会起作用: 文档id的名称是如何调用的?

  • 我有一个网站,用户可以做课程。当用户开始一个课程时,我希望将课程标识符添加到FireStore中的用户文档中。在网站上,用户有自己的个人资料页面。其中一个区段是正在进行的课程区段,用户可以在该区段中查看他们当前注册的课程。 我可以将课程文档键添加到用户文档上的一个字段中,一旦他们开始课程,该字段是一个字符串数组,包含另一个集合中文档的键。 GetRegrendCareersList=async()