Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

121
Visualizações
La base de datos Firebase Realtime muestra un comportamiento extraño

Estoy usando react-native-firebase en una aplicación expo expulsada e intento crear un sistema de detección de presencia en mi aplicación de chat que detectará si el destinatario del mensaje está en línea y, si no, cuándo estuvo en línea por última vez. Los datos se almacenarán de la siguiente manera en la base de datos en tiempo real de firebase:

 { lastSeen:[{ [userId]:{ state: boolean time: serverTimeStamp } }] }

El problema es que la consola Firebase nunca muestra los datos y solo si el destinatario está en línea, la aplicación muestra estos datos (aunque no esté visible en la consola), pero si el usuario está desconectado, no se devuelve nada ni se genera ningún error. Configuré leer y escribir en verdadero en las reglas de realtimeDB. Aquí está el código que estoy usando:

 import database from "@react-native-firebase/database"; export const updateUserLastSeen = (userId) => { const userStatusDatabaseRef = database().ref("/lastSeen/" + userId); console.log("updatelast", userId); userStatusDatabaseRef .set({ state: true, time: database.ServerValue.TIMESTAMP, }) .then(() => console.log("online")) .catch((e) => console.log(e)); // database() // .ref(".info/connected") // .on("value", function (snapshot) { // if (snapshot.val() == false) { // return; // } userStatusDatabaseRef .onDisconnect() .set({ state: false, time: database.ServerValue.TIMESTAMP, }) .then(function () { console.log("disconnect configured"); // userStatusDatabaseRef.set({ // state: true, // time: database.ServerValue.TIMESTAMP, // }); }); // }); }; export const checkUserLastSeen = (userId, setUserLastSeen) => { console.log("check last", userId); database() .ref("/lastSeen/" + userId) .on("value", (snapshot) => { setUserLastSeen(snapshot.val()); console.log("User data: ", snapshot.val()); }); console.log("after check last"); };

Probé tanto el código de Firebase docs como el de rnfirebase docs. En el código anterior, ninguna de las funciones "then" o "catch" se llama en updateUserLastSeen, pero en checkUserLastSeen se invoca "on" solo si el portador del ID de usuario está en línea. Además, estoy usando db en tiempo real solo para este propósito y cloud firestore para almacenar otros datos y funciona bien. Cualquier ayuda sería apreciada. Gracias.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Si no se llama ni then ni catch of a write, generalmente significa que el cliente no está conectado al servidor.

Recomiendo verificar para asegurarse de que su aplicación tenga una conexión de red y que haya configurado la URL (correcta) para su base de datos.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda