我正在尝试使用 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
})
})
})
}
对于调试,请尝试通过控制台记录它。
RISEBY
TA贡献1856条经验 获得超5个赞
React 状态是异步的,您确实会在控制台中获取状态值,但是当运行 firestore 查询时,因为它也是异步的,因此您的状态以某种方式被覆盖,或者您的页面正在刷新并再次设置状态。
我遇到了同样的问题,然后我检查了我的页面是否被刷新,并且即使我在控制台中获得了它,我也丢失了我设置的状态.log(),但是当我的消防商店运行查询时,那里没有状态。
您需要在此处提供完整的代码,以便我们查看它。
添加回答
举报
0/150
提交
取消