javascript - Cómo agregar un Documento con ID Personalizado a firestore
¿Hay alguna posibilidad de añadir un documento a Firestore Collection con un ID generado por el personalizado, no el id generado por Firestore Engine?
Respuesta #1
Para usar un ID personalizado necesitas usar .set, en lugar de .add
Esto crea un documento con el ID "LA":
db.collection("cities").doc("LA").set({
name: "Los Angeles",
state: "CA",
country: "USA"
})
Esto se toma de los documentos oficiales aquí
Respuesta #2
Simplemente dejaré esto aquí por si alguien está buscando la versión 9.
Esto fue tomado de los documentos.
import { doc, setDoc } from "firebase/firestore";
// Add a new document in collection "cities" with "LA" as id
await setDoc(doc(db, "cities", "LA"), {
name: "Los Angeles",
state: "CA",
country: "USA"
});
donde db es:
const firebaseApp = initializeApp(firebaseConfig)
const db = getFirestore(firebaseApp)
Respuesta #3
En caso de que uses fuego angular,
class Component{
constructor(private afs: AngularFireStore) {} // imported from @angular/fire/firestore
addItem() {
this.afs.collection('[your collection]').doc('[your ID]').set({your: "document"});
}
}
Respuesta #4
Para ampliar la respuesta aceptada, si alguna vez quisieras que tu cliente generara un ID aleatorio para el documento antes de enviar a Firestore (suponiendo que exista la misma función createId() fuera de AngularFire2)
const newId = db.createId();
db.collection("cities").doc(newId).set({
name: "Los Angeles",
state: "CA",
country: "USA"
})
Esto es útil para establecer el ID como un campo de referencia en otro documento, incluso antes de que Firestore guarde algo. Si no necesitas usar el objeto guardado de inmediato, esto acelera el proceso al no hacerte esperar por el ID. La llamada set() ahora es asincrónica respecto al pipe que podrías estar usando en Angular
Observa que no puse id: newId en el objeto set, porque Firestore por defecto no guarda el ID como un campo en el documento
