Estoy tratando de aprender firebase. Estoy haciendo un proyecto como Linkedin usando Angular y Firebase.
Estoy usando el paquete @angular/fire en mi proyecto.
Hasta ahora he realizado la autenticación y he agregado información básica de un usuario. Tengo una colección de users
donde cada ID de documentId
tiene información como name
, email
, etc.
Ahora mi próximo objetivo es crear una sección de experiencia laboral. Ya que un usuario puede tener múltiples experiencias laborales.
Debo decidir continuar con la subcolección debajo de cada ID de documento de usuario en lugar de crear una colección separada para work-experience
.
Ahora tengo algunos problemas para agregar una subcolección en mi colección de users
.
Un usuario solo puede agregar/actualizar una experiencia a la vez. Mi interfaz de usuario será algo similar a Linkedin. Cuando se hace clic en el botón 'Agregar experiencia', aparecerá un modal y habrá un formulario dentro del formulario con campos como jobTitle
, companyName
, etc. Entonces, una vez que se haga clic en el envío, quiero guardar esos datos en la work-experience
subcolección con un ID de documento único.
Actualmente estoy agregando mi información básica como esta
agregando
addUser(user: any): Observable<void> { const ref = doc(this.firestore, 'users', user.uid); return from(setDoc(ref, user)); }
Actualizando
updateUser(user: any): Observable<void> { const ref = doc(this.firestore, 'users', user.uid); return from(updateDoc(ref, { ...user })); }
Ahora quiero agregar una subcolección llamada work-experience
en la colección de users
.
De su otra pregunta , creo que necesita agregar una subcolección que contenga un documento con work-experience
identificación.
Si mi suposición es correcta, haga lo siguiente para crear la referencia del DocumentReference
a este documento:
const workExperienceDocRef = doc(this.firestore, `users/${user.uid}/sub-sections/work-experience`);
Nota: asegúrese de usar tildes de retroceso .
Y luego puede configurar los datos de este documento de la siguiente manera, por ejemplo:
return from(setDoc(workExperienceDocRef, {experiences: [{years: "2015-2018", company: "comp1"}, {years: "2018-2021", company: "comp2"}]}));
Si desea crear una subcolección para el documento del usuario, haga lo siguiente:
const userSubCollection = collection(this.firestore, `users/${user.uid}/sub-collection`);
Luego puede usar el método addDoc()
, que generará automáticamente la ID del documento:
const docRef = await addDoc(userSubCollection, { foo: "bar", bar: "foo" });