代码之家  ›  专栏  ›  技术社区  ›  AlexZvl

我需要Firestore查询来检查对象是否已定义

  •  1
  • AlexZvl  · 技术社区  · 7 年前

    这是我要查询的示例集合。

    {
      name: "example1"
    },
    {
     name:"example2",
     address: {
      address2: "12 dasl"
     }
    },
    {
     name:"example3",
     address: {
      address1: "12 dasl"
     }
    }
    

    预期结果:示例2、示例3

    我试着用

    db.collection("users").where("address", ">", "")
    

    但它不起作用。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Community CDub    5 年前

    云Firestore只能查询每个文档中位于已知路径的字段。由于情况并非如此,因此无法使用当前数据模型执行所需的查询。

    Firestore documentation on query limitations :

    云Firestore不支持以下类型的查询:

    。。。

    单个数组成员的查询。但是,您可以使用中的技术建模和查询类似数组的数据 Working with Arrays, Lists, and Sets

    但在您的情况下,我会考虑在每个文档中添加一个简单的字段来标记是否有地址。E、 g.:

    {
      name: "example1",
      hasAddress: false
    },
    {
     name:"example2",
     hasAddress: true,
     address: {
      address2: "12 dasl"
     }
    },
    {
     name:"example3",
     hasAddress: true,
     address: {
      address1: "12 dasl"
     }
    }
    

    现在,您的查询变得很简单:

    db.collection("users").where("hasAddress", "==", true)