Home > Mobile >  Firestore add Document ID to Data via functions
Firestore add Document ID to Data via functions

Time:11-27

I'm looking to add the Firestore ID to the DocumentData, so that I can easily utilize the ID when referring to rows in a table, without having to use document.data().property everytime I call a property of a document. Instead, I want to be able to call document.id.... document.property... and so on.

Is there an easy way to do this? Possibly with a Cloud Function that adds the auto-generated ID to the document data?

Thanks!


Example:

export const getSpaces = async () => {
  const spaceDocs = await getDocs(spacesCollection)
  spaceDocs.docs.forEach((spaceDoc) => {
    const spaceID = spaceDoc.id
    const spaceData = spaceDoc.data()
    console.log(spaceID)
    
    spaces.value.push(spaceData)
  })
}

Now, the spaces array has objects containing the data of the documents. But, I loose the ability to reference the ID of a document.

Alternatively, I can add the entire document to the array, but following that, I'll have to access the properties by always including the data() in between. I.e. space.data().name

I'm certain, theres a better way

CodePudding user response:

A DocumentSnapshot has id property that you are looking for. If you add something within the document, then you'll need to access the data first with doc.data().field_name.

CodePudding user response:

You don't need Cloud Functions to add the document ID to the data of that document. If you look at the third code snippet in the documentation on adding a document, you can see how to get the ID before writing the document.

In some cases, it can be useful to create a document reference with an auto-generated ID, then use the reference later. For this use case, you can call doc() [without any arguments]:

const newCityRef = db.collection('cities').doc(); //            
  • Related