5

In firestore v8 (web sdk) I was doing it like below:

firestore.ref().collection("genId").doc().id

But I can't figure out the correct syntax for v9 as collection doesn't have doc() method anymore.

Any suggestions are much appreciated

vir us
  • 9,920
  • 6
  • 57
  • 66

2 Answers2

16

From the Firebase documentation on adding a 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():

import { collection, doc, setDoc } from "firebase/firestore"; 

// Add a new document with a generated id
const newCityRef = doc(collection(db, "cities"));

// later...
await setDoc(newCityRef, data);

Instead of writing to the ref as the sample does, you can also get the ID from the document ref with:

console.log(newCityRef.id);
Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
2

You can call collection to get a CollectionReference Object and use this to call doc.

Collection: https://firebase.google.com/docs/reference/js/firestore_.md#collection

Doc: https://firebase.google.com/docs/reference/js/firestore_.md#doc_2

const ref = collection(firestore, "genId")
const id = doc(collection)

As per the API reference:

If no path is specified, an automatically-generated unique ID will be used for the returned DocumentReference.

aside
  • 722
  • 4
  • 20
  • 2
    Thanks for the reference! Seems like it would be doc(collection).id though as doc() returns docReference as far as I can see now. – vir us Nov 05 '21 at 22:03