0

I tried using writeBatch() to write documents in subcollections.

I followed the Fireabase Documentation and came up with the script:

const batch = writeBatch(this.db);

const ref = doc(this.db, 'collection/document/collection1/document/collection2');

batch.set(ref, data);

await batch.commit()

"ERROR Error: Uncaught (in promise): FirebaseError: [code=invalid-argument]: Invalid document reference. Document references must have an even number of segments, but collection/document/collection1/document/collection2 has 5."

I read in one post that The path to a document has an even number of segments. While the path to a collection has odd. So, I decided to try using collection instead.

const batch = writeBatch(this.db);

const ref = collection(this.db, 'collection/document/collection1/document/collection2');

batch.set(ref, data);

await batch.commit()

but this time, there is a type error:

"Argument of type 'CollectionReference' is not assignable to parameter of type 'DocumentReference'. Types of property 'type' are incompatible."

syahiruddin
  • 401
  • 5
  • 14

1 Answers1

0

After some searching, I found a solution in the Firebase documentation that you can create a document reference with an auto-generated ID, then use the reference later. Like so:

const batch = writeBatch(this.db);

const ref = collection(this.db, 'collection/document/collection1/document/collection2');

batch.set(doc(ref), data);

await batch.commit()
syahiruddin
  • 401
  • 5
  • 14