为什么一个Firebase身份验证登录会烧穿21 DB读取操作?

为什么一个Firebase身份验证登录会烧穿21 DB读取操作?,firebase,google-cloud-firestore,firebase-authentication,Firebase,Google Cloud Firestore,Firebase Authentication,今天重置每日时间段后,我测试了一些身份验证操作,其中我根本不使用Firebase.Firestore。我所做的只是登录,然后注销。需要注意的是,一旦经过身份验证,就没有任何侦听器或任何其他Firestore操作。注册流中只存在firestore操作 以下是登录操作: export const loginUser = (email, password) => { return (dispatch) => { dispatch({ type: types.LOGI

今天重置每日时间段后,我测试了一些身份验证操作,其中我根本不使用Firebase.Firestore。我所做的只是登录,然后注销。需要注意的是,一旦经过身份验证,就没有任何侦听器或任何其他Firestore操作。注册流中只存在firestore操作

以下是登录操作:

export const loginUser = (email, password) => {
    return (dispatch) => {
        dispatch({ type: types.LOGIN_USER });
        // listen for change in auth state before signing in
        return new Promise((resolve, reject) => {
            firebase
                .auth()
                .signInWithEmailAndPassword(email, password)
                .then((userCredential) => {
                    console.log('User Credential: ' + JSON.stringify(userCredential));
                    const unsubscribe = firebase.auth().onAuthStateChanged((user) => {
                        if (user) {
                            console.log('Logged in: ' + user.email);
                            loginUserSuccess(dispatch, user);
                            resolve(user);
                        } else {
                            console.log('Authentication state changed, user object is null...');
                        }
                    });
                    // No longer need to listen to auth state
                    unsubscribe();
                })
                .catch((error) => {
                    console.log('Error during Email sign-in: ' + error);
                    loginUserFail(dispatch, error.message);
                });
        });
    };
};
(loginUserSuccess/Fail仅发送至reducer,无其他)

注销时,此操作将运行:

export const logoutUser = () => {
    return (dispatch) => {
        return new Promise((resolve, reject) => {
            firebase
                .auth()
                .signOut()
                .then(() => {
                    dispatch({ type: types.RESET_AUTH });
                    console.log('Dispatching types.RESET_AUTH');
                    resolve();
                })
                .catch((error) => reject(error.message));
        });
    };
};
此测试之前的Firestore使用率均为0。这一个登录/注销周期后的使用数据:

reads: 21
writes: 0
deletes: 0
peak connections: 0
这是怎么回事。。。为什么要花21块钱?如果您需要更多信息,请询问。我注意到的唯一一件事是,我记录的userCredential总共有22个对象属性(不是21个,但非常接近)。但如果承诺的用户凭证是导致所有这些DB读取的原因…那就没有意义了


编辑:在不进行任何其他测试和刷新firestore使用页面的情况下,它更改为22次读取

Firebase身份验证调用不以任何方式使用Firestore。Firestore读取操作不能从那里进行。你有没有打开Firestore控制台?因为这将读取数据,因为它需要显示该数据。如果您对这些操作仍有疑问,并且无法从您共享的代码中解释,请在疑难解答中提供个性化帮助。谢谢frank。我正在从console.firebase读取使用率数据,是的……但最初我在测试前访问控制台时……当天的数据都是0。然后运行登录/注销测试,它启动了。但是当我第二次尝试使用同一个测试用户帐户时,读数没有上升。然后我尝试使用第二个测试帐户,读取量增加了22个读取量Firebase控制台是意外读取的#1来源。正如Frank所说,您在这里展示的代码不会对任何读取负责。这非常令人困惑。如果是这样的话,控制台就是一周内读取近1000次的原因…那不可能。。。