为什么一个Firebase身份验证登录会烧穿21 DB读取操作?
今天重置每日时间段后,我测试了一些身份验证操作,其中我根本不使用Firebase.Firestore。我所做的只是登录,然后注销。需要注意的是,一旦经过身份验证,就没有任何侦听器或任何其他Firestore操作。注册流中只存在firestore操作 以下是登录操作:为什么一个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
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次的原因…那不可能。。。