¿Cuál es la forma correcta de agregar un documento de base de fuego con una identificación generada automáticamente en svelte?
Hasta ahora estoy usando el siguiente fragmento de código:
db.collection('colname').add({ id:'temp', text:'sometext' }).then( result=>{ db.collection('colname').doc(result.id).update({id: result.id}); } );Lo que no me gusta de esta solución:
¿Hay alguna solución más ordenada?
Contexto :
Quiero pasar el documento como parámetro a un SvelteSubComponent esbelto:
let docs = []; db.collection('colname').onSnapshot(data =>{ docs=data.docs; }); (...) {#each docs as doc} <SvelteSubComponent {...doc.data()}/> {/each}Quiero poder acceder a la identificación del documento en SvelteSubComponent.
Si simplemente necesita una identificación aleatoria única, le recomiendo usar la biblioteca UUID ( npm install uuid ) y específicamente UUID v4 .
Entonces lo usarías de la siguiente manera:
import { v4 as uuidv4 } from 'uuid'; ... db.collection('colname').add({ id: uuidv4(), text:'sometext' }).then(...); El ID generado será una cadena única generada aleatoriamente con el formato '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed' .
El método add() generará una ID de documento aleatoria cada vez. Si también desea agregar la identificación del documento en los datos del documento, será mejor generar la identificación de antemano y luego usar set() para crear un documento con esa identificación:
const docId = db.collection('colname').doc().id db.collection('colname').doc(docId).set({ id: docId, text:'sometext' }).then(() => { console.log("Document added") })