首页 > 解决方案 > 数组包含未在二维数组中获取结果

问题描述

我将数据保存在文档中,如下图所示。我想从数组中获取记录notifyArrayctg其中array-contains Burger

这是我正在尝试的代码:

  firebase.firestore().collection(`notifications`)
  .where("notifyArray", "array-contains", 'Burger')
  .onSnapshot(querySnapshot=> {           
  querySnapshot.forEach(doc=> {
      console.log(doc.data());
      console.log("Search result");
      var data = Object.assign(doc.data(), {docid : doc.id})
      this.goalList1.push(data);
  });
  console.log(this.goalList1);
  });

但它没有返回任何结果。理想情况下,它应该返回 2 条记录。

在此处输入图像描述

标签: javascriptfirebasegoogle-cloud-firestore

解决方案


该数组notifyArray是一个映射数组,每个映射包含两个属性。Firestore 不支持查询数组中的地图属性。您只能搜索地图的全部内容,这意味着您必须知道其所有字段的所有值。

您可以做的是创建一个food包含映射中属性的字符串值的新数组,然后查询该数组。

firebase.firestore()
    .collection(`notifications`)
    .where("foodArray", "array-contains", 'Burger')

上面,查询期望有一个名为 的字符串数组foodArray


推荐阅读