Javascript 如何使用索引数组从firebase获取数据?React/Node.js

Javascript 如何使用索引数组从firebase获取数据?React/Node.js,javascript,reactjs,firebase,google-cloud-firestore,Javascript,Reactjs,Firebase,Google Cloud Firestore,我试图使用索引数组作为条件从firebase获取数据 我有一个类别数组,我需要从数组中获取所有具有类别的项目。一个项目可以有更多类别。 我尝试过类似的方法,但foreach对收集没有任何帮助。我知道您无法将阵列传递给firebase,因此我需要其他解决方案 const getItemsByCategories = (categories: string[]) => { const collection = db.collection("items"); cat

我试图使用索引数组作为条件从firebase获取数据

我有一个类别数组,我需要从数组中获取所有具有类别的项目。一个项目可以有更多类别。 我尝试过类似的方法,但foreach对收集没有任何帮助。我知道您无法将阵列传递给firebase,因此我需要其他解决方案

const getItemsByCategories = (categories: string[]) => {
  const collection = db.collection("items");

  categories.forEach(category => {
    collection.where("category", "array-contains", category);
  });

  return collection.get().then(mapQuerySnapshot);
};
如果“类别”字段是一个列表,并且您正在查找包含内存中另一个列表中任何项目的文档,那么您应该使用查询。您可以直接传递数组:

const collection = db.collection("items")
const query = collection.where("category", "array-contains-any", categories);
query.get().then(...)

我之前已经尝试过了,我得到的“Argument of type'”数组包含any“”不可分配给“WhereFilterOp”类型的参数。我知道我应该更新firebase依赖项,但因为我是firebase的新手,所以我不知道该更新什么。有什么建议吗?请确保您使用的是最新版本的Firestore SDK。谢谢大家:)现在我遇到了一个情况,我需要通过10个以上的ID,而firebase限制为10个。有什么办法解决这个问题吗?如果你有新问题,请单独发布,并解释问题所在。