如何从Redux动作中分离Firebase onSnapshot侦听器的Firestore?

时间:2020-04-18 21:26:03

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

在一个本机应用程序中,我有一个redux动作,它调用Firestore的onSnapshot。看起来像这样:

redux动作:

export const onAccountChange = (uid, isUnsubscribe) => {
    console.log('Firestore Read (listener): actions/account => onAccountChange()');
    return (dispatch) => {
        let unsubscribe = firebase.firestore().collection('users').doc(uid).onSnapshot((doc) => {
            dispatch({ type: types.LOAD_ACCOUNT, payload: doc.data() });
            if (doc.get('role') == 'Influencer') {
                onProfileChange(uid);
            }
        });
        if ( typeof isUnsubscribe != "undefined" && isUnsubscribe == true) {
            unsubscribe()
        } 
    };
};

我退出Firebase身份验证时遇到的问题是,出现错误:Firestore/Permission-denied

我不确定这是否是在redux动作中分离侦听器的可行方法。但这是我在注销时调用的redux动作:

export const logoutUser = (uid, role) => {
    return (dispatch) => {
        onProfileChange(uid, true);

        return new Promise((resolve, reject) => {
            firebase
                .auth()
                .signOut()
                .then(() => {
                    dispatch({ type: types.RESET_APP });
                    console.log('Dispatching types.RESET_APP');
                    resolve();
                })
                .catch((error) => reject(error.message));
        });
    };
};

在这种情况下如何分离监听器? (不要粘贴firestore dox,我已经阅读了它们,它们并没有帮助我了解如何解决此问题)

0 个答案:

没有答案