我正在尝试从 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() 操作。所以我需要另一种方法来实现这一目标,但一次只能获取一个文档。
使用 not-in 查询 指定要排除的文档 ID 列表,最多可达记录的 10 个限制。
const query = firestore()
.collection("pets")
.where("type", "==", "dog")
.where(firestore.FieldPath.documentId(), "not-in", excludedIds)
这是您进行单个查询来执行您所说的操作的唯一选择。