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

firestoreConnect Query - you can only perform equality comparisons on null ( via whereEqualTo )

过去 2 天我一直被这个问题困扰,现在我决定 post 在这里。我不知道出了什么问题以及哪里出了问题。一切看起来都很好并且在我使用 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);

当用户注销时,此代码中的 userid 参数变为 null:

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

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

解决方案是在注销用户之前分离查询侦听器。我自己从来没有用 redux-firebase 做过这个,但是这个 detachListener method 看起来很有希望。