firestoreConnect查询-您只能在null上执行相等比较(通过whereEqualTo)

时间:2019-11-20 14:22:33

标签: reactjs firebase react-native google-cloud-firestore react-redux-firebase

最近两天来我一直在困扰这个问题,现在我决定将其发布在这里。我不知道出什么事了,在哪里。一切似乎都很好,并且可以在我使用where查询的屏幕上正常工作,但是当我移至另一个屏幕并尝试从该应用注销时,此错误会弹出。

react native firebaseconnect error

这是我的firestore收集结构:

react native firebaseconnect error

现在这是我为实现此目的而编写的代码:

    //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);

1 个答案:

答案 0 :(得分:0)

用户注销后,此代码中的userid参数将变为null

where: [['squadMembers', 'array-contains', userid]],

如错误消息所述,您无法将null传递给whereEqualTo操作。仅在array-contains个操作中有效。

解决方案是在注销用户之前分离查询侦听器。我自己从未与redux-firebase做过这个事情,但是这个detachListener method似乎很有前途。