Since you are using angularFire, it doesn't make any sense if you are going back to default firebase methods for your implementation.
AngularFire itself has the proper mechanisms implemented. Just have to use it.
valueChanges()
method of angularFire provides an overload for getting the ID of each document of the collection by simply adding a object as a parameter to the method.
valueChanges({ idField: 'id' })
Here 'idField' must be same as it is. 'id' can be anything that you want your document IDs to be called.
Then the each document object on the returned array will look like this.
{
field1 = <field1 value>,
field2 = <field2 value>,
..
id = 'whatEverTheDocumentIdWas'
}
Then you can easily get the document ID by referencing to the field that you named.
AngularFire 5.2.0
doc => {...doc.data(), id: doc.id}
. You can use the map operator to achieve the same on RX. – Victor Nascimento