最近两天来我一直在困扰这个问题,现在我决定将其发布在这里。我不知道出什么事了,在哪里。一切似乎都很好,并且可以在我使用where查询的屏幕上正常工作,但是当我移至另一个屏幕并尝试从该应用注销时,此错误会弹出。
这是我的firestore收集结构:
现在这是我为实现此目的而编写的代码:
//console.log(state.firestore.data['otherSquads'])
return {
auth: state.firebase.auth,
totalSquads: state.firestore.ordered.squad,
currUser: state.firestore.data['currentUser']
}
}
export default compose(
connect(mapStateToProps),
firestoreConnect(props => {
const userid = props.auth.uid;
return [
{
collection: 'squad',
where: [['squadMembers', 'array-contains', userid]],
orderBy: ['createdAt', 'desc']
},
{
collection: 'users',
doc: userid,
storeAs: 'currentUser'
}
]
})
)(SquadScreen);
答案 0 :(得分:0)
用户注销后,此代码中的userid
参数将变为null
:
where: [['squadMembers', 'array-contains', userid]],
如错误消息所述,您无法将null
传递给whereEqualTo
操作。仅在array-contains
个操作中有效。
解决方案是在注销用户之前分离查询侦听器。我自己从未与redux-firebase
做过这个事情,但是这个detachListener
method似乎很有前途。