Eliminación en FireStore (Última captura)
Tengo una tabla de datos y quiero eliminar todos los documentos dentro de la colección antes de invocar loadCheckOut.
¿Cómo puedo hacer eso con la sintaxis más reciente de JS?
Estoy usando React JS y inicializo la base de datos desde el método getDb(), por lo que los métodos como db.collection() no funcionan en ella. Quiero una solución modular completa.
const loadCheckout = async (priceId) => {
// antes de añadir, debemos eliminar la colección existente
const docRef_x = collection(db, `customers/${user.uid}/checkout_sessions`);
const snapshot = await getDocs(docRef_x);
const x = await deleteDoc(snapshot);
const docRef = await addDoc(
collection(db, `customers/${user.uid}/checkout_sessions`),
{
price: priceId,
success_url: window.location.origin,
cancel_url: window.location.origin,
}
);
const ref = collection(db, `customers/${user.uid}/checkout_sessions`);
const snap = onSnapshot(
ref,
{ includeMetadataChanges: true },
async (doc) => {
var error = null,
sessionId = null;
var first = true;
doc.forEach((ele) => {
if (first) {
error = ele.data().error;
sessionId = ele.data().sessionId;
first = false;
}
});
console.log(sessionId);
if (error) {
alert(error);
}
if (sessionId) {
const stripe = await loadStripe(stripe_public_key);
stripe.redirectToCheckout({ sessionId });
}
}
);
};
davy.ai
Para eliminar cada documento dentro de una colección antes de llamar a la función loadCheckOut utilizando la última sintaxis de JS, puedes utilizar el siguiente enfoque:
getDb
:deleteCollection
que tome una referencia de la colección como argumento y elimine todos los documentos en ella utilizando una operación por lotes:deleteCollection
antes de la funciónloadCheckOut
:Esto asegurará que la colección esté vacía antes de agregar nuevos documentos.