Saltar al contenido

¿Cuál es la mejor manera de verificar si existe un registro de Firestore si se conoce su ruta?

Es fundamental comprender el código bien previamente a adaptarlo a tu trabajo si ttienes algo que aportar puedes dejarlo en la sección de comentarios.

Solución:

Echando un vistazo a esta pregunta parece .exists todavía se puede usar como con la base de datos estándar de Firebase. Además, puede encontrar más personas hablando sobre este problema en github aquí

La documentación dice

NUEVO EJEMPLO

const cityRef = db.collection('cities').doc('SF');
const doc = await cityRef.get();
    
if (!doc.exists) 
    console.log('No such document!');
 else 
    console.log('Document data:', doc.data());

Nota: si no hay ningún documento en la ubicación a la que hace referencia docRef, el documento resultante estará vacío y la llamada que existe en él devolverá false.

EJEMPLO ANTIGUO

var cityRef = db.collection('cities').doc('SF');

var getDoc = cityRef.get()
    .then(doc => 
        if (!doc.exists) 
            console.log('No such document!');
         else 
            console.log('Document data:', doc.data());
        
    )
    .catch(err => 
        console.log('Error getting document', err);
    );

Mira esto 🙂

  var doc = firestore.collection('some_collection').doc('some_doc');
  doc.get().then((docData) => 
    if (docData.exists) 
      // document exists (online/offline)
     else 
      // document does not exist (only on online)
    
  ).catch((fail) => 
    // Either
    // 1. failed to read due to some reason such as permission denied ( online )
    // 2. failed because document does not exists on local storage ( offline )
  );

Si el modelo contiene demasiados campos, sería una mejor idea aplicar una máscara de campo en el CollectionReference::get() resultado (ahorremos más plan de tráfico en la nube de Google, o/). Así que sería una buena idea optar por utilizar el CollectionReference::select() + CollectionReference::where() para seleccionar solo lo que queremos obtener del firestore.

Supongamos que tenemos el mismo esquema de colección que el ejemplo de ciudades firestore, pero con un id campo en nuestro documento con el mismo valor de la doc::id. Entonces puedes hacer:

var docRef = db.collection("cities").select("id").where("id", "==", "SF");

docRef.get().then(function(doc) 
    if (!doc.empty) 
        console.log("Document data:", doc[0].data());
     else 
        console.log("No such document!");
    
).catch(function(error) 
    console.log("Error getting document:", error);
);

Ahora descargamos solo el city::id en lugar de descargar todo el documento solo para verificar si existe.

Agradecemos que quieras asentar nuestra faena mostrando un comentario o dejando una valoración te estamos agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *