Map items of collection snapshot in Firebase Firestore

Solution 1:

The answer is:

querySnapshot.docs.map(function(doc) {
  # do something
})

The Reference page for Firestore reveals the docs property on the snapshot.

docs non-null Array of non-null firebase.firestore.DocumentSnapshot

An array of all the documents in the QuerySnapshot.

Solution 2:

Got pretty sick and tired of Firestore returning stuff in their classes or whatever. Here's a helper that if you give it a db and collection it will return all the records in that collection as a promise that resolves an actual array.

const docsArr = (db, collection) => {
  return db
    .collection(collection)
    .get()
    .then(snapshot => snapshot.docs.map(x => x.data()))
}

;(async () => {
  const arr = await docsArr(myDb, myCollection)
  console.log(arr)
})()