El problema es que todos mis documentos de colecciones se refieren al mismo archivo de blob porque cada carga reemplaza el blob de almacenamiento existente.
Creo que necesito asignar un nombre al blob para almacenar una nueva entrada cada vez que se carga.
Sin embargo, intentar asignar un nombre con Math.random() no ha funcionado. ¿Sugerencias?
import { useParams, useHistory } from "react-router-dom"; const { productID } = useParams(); async function handleSubmitUpload() { if (recordedChunks.length) { const promises = []; const blob = new Blob(recordedChunks, {Name: Math.random()}, {type: "video/webm"}); const reviewRef = await storage().ref(`prodReviews/${blob.Name}`) const uploadTask = await storage().ref(`prodReviews/${blob.Name}`).put(blob); await promises.push(uploadTask); const videoUrl = await reviewRef.getDownloadURL(); const timestamp = new Date(); await firestore .collection("products") .doc(productID) .collection("productReviewClips") .add({videoUrl, userID: auth.currentUser.uid, createdDate: timestamp }) history.push(`/product/${productID}`); setRecordedChunks([]); } }El constructor Blob() parece tomar solo 2 parámetros, pero está pasando 3. Puede usar Firestore SDK o UUID para generar ID aleatorios y usarlos como nombres de archivo, como se muestra a continuación:
const blob = new Blob(recordedChunks, {type: "video/webm"}); // Get a random ID const randomId = firestore.collection("test").doc().id // Upload to Firebase Storage const reviewRef = await storage().ref(`prodReviews/${randomId}`)