带有多个 where != 条件的 Firestore 查询

问题描述 投票:0回答:1

我正在尝试从 firestore 中的集合中获取单个文档,但其文档 id 必须与数组上的 id 列表不同

const excludedIds = ["zyYjPcJG0mqy3WXDQBOZ", "Dics6F0gKPtxKqOuxIhm"];

 const getPotentialMatch = async () => {
    const petsCollection = firestore().collection("pets");
    let query = petsCollection.where("type", "==", "dog");

    excludedIds.forEach((id) => {
      query = query.where(firestore.FieldPath.documentId(), "!=", id);
    });

    query = await query.get();

    let potentialMatches = query.docs.map((doc) => ({
      id: doc.id,
      ...doc.data(),
    }));

    console.log(potentialMatches);
  };

问题是 firestore 不允许我使用 '!=' 执行多个 where() 操作。所以我需要另一种方法来实现这一目标,但一次只能获取一个文档。

javascript firebase google-cloud-firestore
1个回答
1
投票

使用 not-in 查询 指定要排除的文档 ID 列表,最多可达记录的 10 个限制。

const query = firestore()
    .collection("pets")
    .where("type", "==", "dog")
    .where(firestore.FieldPath.documentId(), "not-in", excludedIds)

这是您进行单个查询来执行您所说的操作的唯一选择。

© www.soinside.com 2019 - 2024. All rights reserved.