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.