首页 > 解决方案 > Firebase Firestore 查询超过 10 个元素的数组

问题描述

[**在此处输入图片描述**在此处输入图像描述

我正在尝试使用用户设置查询 post-collection,但设置是一个包含 10 多个元素的数组,并且没有返回任何内容。我知道文件确实提到了 10 个元素的限制,有人知道解决方法吗?

firebaseApp.collection('posts')
            .where("newTag", "in", mySettings)
            .get()
let array = [];
        posts.forEach((post) => {
            array.push(post.data());
        });

dispatch({ type: ActionTypes.GET_POSTS, payload: array });

标签: javascriptfirebasegoogle-cloud-firestore

解决方案


一个对数组进行分块的简单函数可以解决您的问题:

const chunkArray = (list: any[], chunk: number): any[][] => {
    const result = [];

    for (let i = 0; i < list.length; i += chunk) {
        result.push(list.slice(i, i + chunk));
    }

    return result;
};

export { chunkArray };

然后 for await hack 也可以获取快照:

  const snaps_collection: FirebaseFirestore.QuerySnapshot[] = [];

  for await (const snap of chunks.map(
    async (chunk) =>
      await database
        .collection("collection_name")
        .where("id", "in", chunk)
        .get()
  )) {
    snaps_collection.push(snap);
  }

推荐阅读