Cómo incluir el id de documento en Firestore colección Angular 5

Tengo esta función que obtiene todos los puestos de trabajo y quiero obtener el id del post alguna idea de cómo conseguir el id del post o Cómo incluir el id cuando puedo agregar el documento a la colección

get_the_posts(){
    this.Post_collection = this.afs.collection('posts'); 
    return this.Posts = this.Post_collection.valueChanges();
}

Que me da este resultado:

[
   { name: 'post 1 name' description: 'post description'}, 
   { name: 'post 2 name' description: 'post description'},
   { name: 'post 3 name' description: 'post description'},
]

Y quiero que esta salida

[
   { id: 'm9mggfJtClLCvqeQ', name: 'post 1 name' description: 'post description'}, 
   { id: 'm9mggfJtCldsadaf', name: 'post 2 name' description: 'post description'},
   { id: 'm9mggfJtCdsasavq', name: 'post 3 name' description: 'post description'},
]

1 Respuestas

  • Jacky Tang
    4 de mayo de 2019

    Yo estaba tan molesto que no hay un método para esto, así que he hecho uno para compartir con todo el mundo. Algo tan básico debe ser integrado en la propia biblioteca.

    getCollectionWithIDs(collection,key,comparison,value) {
        return this.afs.collection<any>(collection, ref => 
            ref.where(
                key, comparison, value
            )).snapshotChanges().pipe(
                map(actions => actions.map(a => {
                const data = a.payload.doc.data();
                const id = a.payload.doc.id;
                return { id, ...data };
            })))
    }
    

    Tenga en cuenta que este.afs es de tipo AngularFirestore que deben estar en el constructor.