Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

271
Views
Quiero llamar a un solo documento desde mi Angular Firestore

Estoy enfrentando un problema en mi proyecto, estoy usando Enrutamiento de niños anidados para mostrar datos en mi proyecto, quiero que los datos de este elemento específico se muestren una vez que haga clic en el botón, hice el enrutamiento correctamente, es simplemente no puedo obtener la función adecuada para los elementos.

Aquí está mi servicio

PostsService.service.ts

 getPostById(id: string){ let docId = this.afs.collection('posts').doc(id).get() .subscribe( doc => { if(doc.exists){ console.log('Document Id => ', doc.id) console.log('Document data => ', doc.data()) }else { console.log('Document not found') } }); return docId; }

y Aquí está mi función TS para el elemento único

.componente.ts

 posts: Posts[] = []; post!:any; constructor( private PostsService: PostsService, private route: ActivatedRoute ) {} ngOnInit(): void { let id = this.route.snapshot.params['id'] this.PostsService.getPostById(id); }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Está intentando obtener toda la colección con getPostById() y luego tratando de encontrar un solo documento de los resultados. Obtener la colección completa significa que leerá n cantidad de veces para n cantidad de documentos, lo cual es un desperdicio y lento.

Si pregunta algo con getPostById() , entonces también debe hacer algo con el retorno. En este momento estás preguntando, pero no estás haciendo nada con la devolución.

¿Qué tal si obtenemos el documento único? Devolverá un Observable, por lo que podemos seguir monitoreando el documento, o simplemente usar el valor nominal tal como está.

 getPostById(id: string) { const itemDoc = this.afs.doc<any>('posts/' + id); return itemDoc.valueChanges(); }

Y en tu componente, no olvides darte de baja del Observable.

 ngOnInit() { let id = this.route.snapshot.params['id']; this.PostsService.getPostById(id).subscribe(post => { console.log(post); }) }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!