unsubscribeFromAuth = null; //memory leak
componentDidMount() {
this.unsubscribeFromAuth = auth.onAuthStateChanged(user => {
this.setState({ currentUser: user });
if (user === null)
return;
// user data
const uid = user.uid;
const photoURL = user.photoURL;
const name = user.displayName;
const userRef = firestore.collection('Users');
userRef.where('uid','==',uid).get().then((querySnapshot) => {
console.log("uid size : ",querySnapshot.size);
// add user extra data when first sign in.
if (querySnapshot.size === 0) {
firestore.collection('Users').add({
uid: uid,
photoURL: photoURL,
name: name,
})
.then((docRef) => {
console.log("Document written with ID: ", docRef.id);
})
.catch((error) => {
console.error("Error adding document: ", error);
});
}
});
});
}
Мой код такой. Но когда я вхожу в систему, querySnapshot.size равен 0 , и он добавляет данные пользователя снова и снова , даже если уже есть пользовательские данные .
введите описание изображения здесь введите описание изображения здесь
Как и у них, у них одинаковые uid, но вход в систему выполняется снова и снова. Есть ли проблемы, когда я так программирую?