【问题标题】:How can i get results out from firestore query如何从 Firestore 查询中获取结果
【发布时间】:2026-01-10 18:55:01
【问题描述】:
componentDidMount(){
    let select=[];
    let result=[];
    let tagsSelected=this.state.tagsSelected
    tagsSelected.forEach(element => {
      select.push(element.name)
    });
    symptomsRef.where("Symptom", "array-contains-any", select).get().then((querySnapshot) => {
      const data = querySnapshot.docs.map((doc) => (doc.id));
      console.log(data);
    });
}

我想知道如何将 const 数据中的数组复制到结果数组。我的意思是我想把它排除在查询之外,

【问题讨论】:

  • 在你的示例代码中,运行时数据的结果是什么?
  • 您是否遇到任何错误?或者正如@Brettski 所问的,数据打印到控制台是什么?

标签: node.js reactjs google-cloud-firestore


【解决方案1】:

根据Firebase Firestore Official Documentation,在您的场景中,带有 array-contains-any 的查询会返回每个 Symptom 文档,其中 Symptom 字段是一个包含任何 选择数组中的元素。

因此它将返回所有文档,其中字段 Symtom 具有 Select 数组中定义的元素之一。

您可以使用 await 来获取所有文档,但是 .then(querySnapShot) 也可以:

const documents = await symptomsRef.where("Symptom", "array-contains-any", select).get()

然后您可以遍历文档以获取the document data,如下所示:


if (documents.empty) {
  console.log('No matching documents.');
  return;
}  

documents.forEach(doc => {
  console.log(doc.id, '=>', doc.data());
});


您可以将文档数据或您想要的任何文档字段保存在列表或常量中,以便执行您想要的任务,如下所示:

let ids=[];
documents.forEach(doc => {
  console.log(doc.id, '=>', doc.data());
  ids.push(doc.id);

  //OR

  const id = doc.id;

});

【讨论】: