【问题标题】:How to query an array on a db firestore?如何在 db firestore 上查询数组?
【发布时间】:2021-11-26 10:40:09
【问题描述】:

我不认为我离答案很远,我试图在 Firestore 上的一个数组中查询一个 id。

我想比较参与者的id。

还有我在 Firestore 中的数据库:

还有我的函数,目前我的函数返回 size =0,所以他们无法捕获查询。

const deleteAbuse = (type) => {
    const participants = channel?.otherParticipants;
    if (!participants || participants.length != 1) {
      return;
    }
    const myID = currentUser.id;
    const otherUserID = participants[0].id;
    console.log('id user', otherUserID);
    channelDB
      .where('participants.id', '==', otherUserID)
      .get()
      .then((querySnapshot) => {
        console.log(querySnapshot.size);
        querySnapshot.forEach((doc) => {
          console.log(doc.ref);
          //doc.ref.delete();
        });
      });
  };

【问题讨论】:

    标签: javascript firebase react-native google-cloud-firestore


    【解决方案1】:

    您无法查询过滤器“通道”集合以仅基于 participants 数组中存在的对象的单个字段来获取文档。换句话说,您不能仅基于该 ID 创建该过滤。为了能够过滤数据,您应该传递给where() 函数,传递整个 对象,而而不是 只传递部分数据。该对象应包含所有字段的值。只有身份证是不够的。

    还有我的函数,目前我的函数返回大小=0

    这是预期的行为,因为在您的数组中没有任何对象只包含一个名为 id 的字段。所有对象都包含 7 个字段,甚至更多,因为我无法在您的屏幕截图中看到所有字段。

    我写了一篇文章叫:

    您可以在第一部分中找到从自定义对象数组中获取自定义对象的最简单方法。

    或者,您可以创建一个保存参与者 ID 的数组,过滤文档并创建另一个数据库调用以获取其对应数据。

    【讨论】:

    • 嘿 Xwingoga06。我可以帮助您了解其他信息吗?如果您认为我的回答对您有所帮助,请考虑通过单击左侧投票箭头下方的复选标记(✔️)来接受它。应将颜色更改为绿色。我真的很感激。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多