Reactjs 如何查询具有不同属性的相同数据

Reactjs 如何查询具有不同属性的相同数据,reactjs,firebase,google-cloud-firestore,Reactjs,Firebase,Google Cloud Firestore,我在Firestore中有一些用户,如: accountType: 'Owner', name: 'himel', email:'himel12@gmail.com' 我在DB中有20个用户 我想根据用户名或电子邮件进行搜索查询,如: userRef.where("name", "==", "himel").get(); or userRef.where("email", "==", &qu

我在Firestore中有一些用户,如:

accountType: 'Owner',
name: 'himel',
email:'himel12@gmail.com'
我在DB中有20个用户

我想根据用户名或电子邮件进行搜索查询,如:

userRef.where("name", "==", "himel").get();

or

userRef.where("email", "==", "himel12@gmail.com").get()
我使用react和useState存储输入值

const [userQuery,setUserQuery] = useState('');
但通过这样做,我不知道用户是否正在写一个名字或电子邮件,以便根据该值获取用户


是否可以使用姓名或电子邮件对用户进行单一查询

您可以在firebase中进行查询,如果我正确获得您的要求,请尝试以下操作:

 import {useState} from 'react'
 const FetchUser = ()=>{
 const [userQuery,setUserQuery] = useState('');
 const [result, setResult] = useState([])
  // you can run this based on a user event for example if the user clicks the button
  userRef.where("name", "==", userQuery).get().then(snapshot=>{
       setResult(snapshot.docs.map(doc=>({id: doc?.id, data: doc?.data()})))
  }).then(()=>{
       // if the results length is zero try by email
       if(result?.length===0){
           userRef.where("email", "==", userQuery).get().then(snapshot=>{
               setResult(snapshot.docs.map(doc=>({id: doc?.id, data: doc?.data()})))
          })  
      }
  })
  .....
  console.log(result)
  .....
 }

我希望这会给你一个好运气的线索。

你可能会对下面这篇文章感兴趣,这篇文章介绍了执行或查询的方法:这里是问题
。其中(“name”,“==”,userQuery)。get()
在这里可以是name或email!尝试使用名称搜索,如果结果长度为0,则使用电子邮件再次搜索。我知道有更好的方法,但这是另一种方法alternative@AsaduzzamanHimel,很抱歉用一个旧帖子打扰你,但我想知道这个改变是否有助于这个答案的可行性,如果没有,你还需要什么信息?也许我们能帮忙?这主要是为了让通读这个问题的人能够得到保证和接受答案。让你更容易找到东西。