본문 바로가기
expert

Firestore - 예기치 않은 읽기

by RWriter 2023. 1. 28.
반응형

질문 제목:

Firestore - 예기치 않은 읽기

질문 내용:

여러분, 여기에 흥미로운 문제가 있습니다. 여러분 중 누구라도 저를 도울 수 있다면 정말 기쁠 것입니다.내 앱 흐름:

  1. 이메일, 비밀번호 및 기타 세부 정보로 등록하십시오.
  2. 사용자를 인증하고 이메일과 비밀번호를 통해 계정을 생성하는 동시에 사용자의 사용자 지정 데이터를 데이터베이스에 작성하기 위한 사용자 firebase.
  3. 사용자를 로그인합니다.

그게 다야, 그게 내 모든 기본 논리이고 내가 아는 한 DB에서 어떤 읽기도 수행하지 않는다는 것을 어떻게 알 수 있습니까?이제... 문제는 내 사용자를 등록할 때 이상한 이유로 내 DB의 사용량을 보기 위해 Firebase 콘솔로 이동하고 다음과 같은 것을 볼 수 있다는 것입니다. 1개의 쓰기(예상대로 괜찮음)뿐만 아니라

13-20개의 READS FROM DB

도 있습니다.이제 이것이 내 질문입니다. 인증 및 쓰기를 수행할 때 지구상에서 내가 Firestorm 을 읽는

이유 는 무엇입니까?

지금 사용하고 있는 DB 코드입니다.

class DatabaseFirebase implements BaseDataBase {
  final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
  final FirebaseStorage _storage = FirebaseStorage.instance;

  FirebaseUser _firebaseUser;
  Firestore _firestore = Firestore.instance;

  @override
  Future<String> login(String email, String password) async {
    _firebaseUser = await _firebaseAuth.signInWithEmailAndPassword(
        email: email, password: password);
    return _firebaseUser.uid;
  }

  @override
  Future<String> register(String email, String password) async {
    _firebaseUser = await _firebaseAuth.createUserWithEmailAndPassword(
        email: email, password: password);
    return _firebaseUser.uid;
  }

  @override
  Future<UserData> getCurrentUser() async {
    if (_firebaseUser == null)
      _firebaseUser = await _firebaseAuth.currentUser();
    UserData user = UserData();
    user.email = _firebaseUser?.email;
    user.name = _firebaseUser?.displayName;
    return user;
  }

  @override
  Future<void> logout() async {
    _firebaseAuth.signOut();
  }

  @override
  Future<void> onAuthStateChanged(void Function(FirebaseUser) callback) async {
    _firebaseAuth.onAuthStateChanged.listen(callback);
  }

  @override
  Future<void> writeUser(UserData user) async {
    _firestore.collection("Users").add(user.toMap()).catchError((error) {
      print(error);
    });
  }
}

아는 사람이 있다면 이 버그를 찾기 위해 어디에서/어떻게 검색해야 하는지 설명해 주시겠습니까? 당신이 어떻게 볼 수 있기 때문에 나는 지금까지 어떤 읽기도 사용하지 않습니다.

해결 답변:

데이터베이스에 대한 가능한 모든 액세스 경로를 이해하지 못하기 때문에 확실히 알 수는 없지만 Firebase 콘솔을 사용하면 읽기가 발생한다는 점에 유의해야 합니다. 쓰기 활동이 많은 컬렉션/문서에서 콘솔을 열어 두면 콘솔은 자동으로 콘솔 디스플레이를 업데이트하는 변경 사항을 읽습니다. 이것은 매우 자주 예기치 않은 읽기의 소스입니다.수행 중인 모든 단계의 전체 재생산 단계가 없으면 확실하게 알 수 있는 방법이 없습니다.Firebase는 현재 문서 읽기의 출처를 추적하는 도구를 제공하지 않습니다. 앱에서 특정 읽기를 측정해야 하는 경우 어떻게든 직접 추적해야 합니다.

반응형

댓글