'How do you add multiple documents at once to a collection in Firestore?
I am somewhat new to Firebase and looking for the ability to write multiple JSON objects into a collection under random IDs in one operation. I am just using firestore and auth(not shown) along with react.
So far I have
Function TestDocs () {
{addDoc(collection(db, 'randomData'), {**object 1 example data**},{**object 2 more example data**}
)
}
I have a button on a webpage which adds the data into the DB. When I check Firestore only the first object is loaded and not the second... on top of this, assuming that I wanted to add hundreds of objects(not just 2), how would I go about this?
I was looking through the documentation for Firestore batch writes but it only lists set(), update() and delete() as permitted operations so I am not sure how it would work. Thanks in advance
Solution 1:[1]
You'll want to do this in two steps:
Create a reference to a new document with a new unique ID:
// Generate two new document references with a generated ids const newRef1 = doc(collection(db, "randomData")); const newRef2 = doc(collection(db, "randomData"));
Write to that reference in your batch or transaction.
Also see:
- Firestore - batch.add is not a function (which contains the older namespaced syntax for doing the same).
- The last snippet in the documentation on adding a document, which shows this approach.
Solution 2:[2]
I found another way to do this without using Firebases batch function. Each transaction or batch of writes can write to a maximum of 500 documents. I was looking to update my app with more than 500 and found a video on YouTube showing another way to do this.
I had to tweak the script a bit to get what I needed but the idea is there.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Frank van Puffelen |
Solution 2 | Killian |