Este es un componente de inicio de sesión de una aplicación de reacción y estoy tratando de hacer un inicio de sesión de autenticación simple con Firebase como mi base de datos en tiempo real.
Mi primer enfoque es ejecutar una solicitud de búsqueda (GET) para ver si hay algún usuario existente. Después de lo cual, si la contraseña coincide con la del usuario, quiero actualizar el campo "isLoggedIn" a verdadero. Para lograr lo siguiente, se realizó otra solicitud de búsqueda (PATCH).
Por lo tanto, me pregunto si es una mala práctica tener múltiples solicitudes de recuperación en una función y me gustaría saber si hay una forma mejor o más eficiente de implementar esta aplicación simple.
const loginHandler = async (userName, password) => { const url = `insert_url_link_here/users/${userName}.json`; try { const response = await fetch(url); const user = await response.json(); if (user.password === password) { await fetch(url, { method: "PATCH", body: JSON.stringify({ isLoggedIn: true }), }); } } catch (error) { console.log(error); }Este es el esquema de mi base de datos.
--users: eric: isLoggedIn: false password: "321" test: isLoggedIn: false password: "222"Sugiero usar una implementación de cliente de Firebase y mirar la documentación de Firebase. Hay ejemplos bien descritos y explícitos en varios idiomas:
https://firebase.google.com/docs/auth/web/start
Además, no veo el sentido de almacenar contraseñas o estado de inicio de sesión de su parte, ya que Firebase Auth ya lo hace por usted de manera segura.
Está accediendo a Firebase Realtime Database a través de su API REST , que implementa operaciones CRUD simples, y no hay forma de combinar una operación de lectura y escritura en una sola operación allí.
La única otra operación relevante es la escritura condicional , que puede usar solo para escribir datos si no se han modificado desde que los leyó. Puede usar esto para implementar un mecanismo de transacción optimista de comparación y configuración, pero dado que está alternando un booleano, no parece aplicarse aquí.
Si se encuentra en un entorno que lo admite, puede considerar usar el SDK de Firebase para esa plataforma, ya que los SDK generalmente usan un socket web para comunicarse con el servidor, lo que a menudo termina siendo mucho más eficiente que realizar múltiples solicitudes HTTP individuales.