Firestore: lecturas inesperadas

Resuelto Mircea asked hace 54 años • 0 respuestas

Hola chicos, tengo un problema interesante aquí y me alegraría mucho que alguno de ustedes pudiera ayudarme con eso.

¿Cuál es el flujo de mi aplicación?

  1. Regístrese con el correo electrónico, contraseña y algunos otros detalles:
  2. Usuario de Firebase para autenticar al usuario y crear una cuenta mediante correo electrónico y contraseña, al mismo tiempo escribo los datos personalizados del usuario en la base de datos.
  3. Inicie sesión como usuario.

Eso es todo, esa es toda mi lógica básica, y como pueden ver, hasta donde yo sé, no estoy leyendo nada de la base de datos.

Ahora... el problema es que por alguna extraña razón cuando estoy registrando a mi usuario voy a la consola de Firebase para ver el uso de mi base de datos y veré algo como... para un usuario que fue creado. Tendrá 1 escritura (lo cual está bien como esperaba) pero también 13-20 LECTURAS DE DB .

Esa es mi pregunta: ¿ POR QUÉ tengo lecturas en Firestorm cuando solo estoy haciendo autenticación y escribiendo?

Aquí está mi código DB que estoy usando ahora mismo.

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);
    });
  }
}

Si algunos de ustedes lo saben, ¿podrían explicarme dónde y cómo debo buscar para encontrar este error? Porque, como puedes ver, no estoy usando ninguna lectura.

Mircea avatar Jan 01 '70 08:01 Mircea
Aceptado

Es imposible saberlo con certeza dado que no entendemos todas las rutas posibles de acceso a su base de datos, pero debe tener en cuenta que el uso de Firebase console generará lecturas. Si deja la consola abierta en una colección/documento con actividad de escritura ocupada, la consola leerá automáticamente los cambios que actualizan la pantalla de la consola. Esta es muy a menudo la fuente de lecturas inesperadas.

Sin una reproducción completa de los pasos exactos que estás dando, no hay forma de saberlo con seguridad.

Actualmente, Firebase no proporciona herramientas para rastrear el origen de las lecturas de documentos. Si necesita medir lecturas específicas de su aplicación, tendrá que realizar un seguimiento usted mismo de alguna manera.

Doug Stevenson avatar Jun 03 '2019 21:06 Doug Stevenson