【问题标题】:Do a research in a Firestore document在 Firestore 文档中进行研究
【发布时间】:2023-01-28 05:35:13
【问题描述】:

在我的“用户”系列中,每个用户都由他们的姓名、爱好和技能列表定义:

“用户”中文档的结构:

name : "Name"
hobbies: ["hobby1","hobby2","hobby3"]
skills: ["skill1","skill2","skill3"]

我想要的是:获取集合中其中一个字段包含特定单词的所有文档。问题是目前我得到了所有文件,然后我做了一个循环来保留匹配的文件。但我宁愿做一个查询(读取很昂贵)。所以我想像这样重新组织文档:

新结构:

data: ["Name","hobby1","hobby2","hobby3",skill1","skill2","skill3"]

所以我可以使用“where”和“array-contains”进行查询。你怎么认为 ?是不是很奇怪?

【问题讨论】:

    标签: google-cloud-firestore


    【解决方案1】:

    如果你想拥有一个OR之间的声明爱好技巧那么您不能使用使用array-contains 的查询。正如documentation所述:

    每个查询最多可以使用一个 array-contains 子句。您不能将 array-contains 与 array-contains-any 结合使用。

    我的建议是将技能和爱好合二为一: 例如。:

    name : "Name"
    skillsandhobbies : ["Hobby1", "Hobby2", "Hobby3", "Skill1", "Skill2", "Skill3"]
    

    然后您可以使用此示例查询来获取所有具有包含特定单词的爱好或技能的文档:

    const q = query(collection(db, "users"), where("skillsandhobbies", "array-contains", "specific-word"));
    

    【讨论】:

      猜你喜欢
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 2015-12-20
      • 1970-01-01
      • 2017-03-13
      相关资源
      最近更新 更多