为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 firestore where 子句与 state 不起作用?

为什么 firestore where 子句与 state 不起作用?

月关宝盒 2022-08-18 10:46:27
我正在尝试使用 react js 中的 where 子句从 firestore 中过滤文档。但是,当我在where子句中使用状态变量时,它不起作用,但是当我提供实际字符串时,它开始工作不工作firebase.firestore().collection('Partners')    .where("Email",'==',this.state.currentUser).get().then( querySnapshot => {      querySnapshot.forEach(doc => {        this.setState({          Theatre:doc.data().Theatre        })    })})加工firebase.firestore().collection('Partners')    .where("Email",'==',"test@test.com").get().then( querySnapshot => {      querySnapshot.forEach(doc => {        this.setState({          Theatre:doc.data().Theatre        })    })})任何帮助将不胜感激。谢谢。编辑我甚至试过了,它正在成真。然而,where 子句不适用于状态变量console.log(this.state.currentUser==='test@test.com')
查看完整描述

2 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

可能是状态变量有问题,如异步效应或任何其他可能的原因。setState


确保状态变量具有值。为了保证安全,请在以下条件下运行此函数:currentUserif


if(this.state.currentUser){

 firebase.firestore().collection('Partners')

     .where("Email",'==',this.state.currentUser).get().then( querySnapshot => {

       querySnapshot.forEach(doc => {


         this.setState({

           Theatre:doc.data().Theatre

         })


     })

 })

}

对于调试,请尝试通过控制台记录它。


查看完整回答
反对 回复 2022-08-18
?
RISEBY

TA贡献1856条经验 获得超5个赞

React 状态是异步的,您确实会在控制台中获取状态值,但是当运行 firestore 查询时,因为它也是异步的,因此您的状态以某种方式被覆盖,或者您的页面正在刷新并再次设置状态。

我遇到了同样的问题,然后我检查了我的页面是否被刷新,并且即使我在控制台中获得了它,我也丢失了我设置的状态.log(),但是当我的消防商店运行查询时,那里没有状态。

您需要在此处提供完整的代码,以便我们查看它。


查看完整回答
反对 回复 2022-08-18
  • 2 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信