Im wanting to create a doc in Firebase Firestore with Javascript... That doesn't just have the automatic generated ID
return addDoc(collection(db, "users"), { bio: signupForm['signup-bio'].value });
This is how I'm coding it could someone please show me where or how to add a custom ID to to the doc?
Thanks
Im wanting to create a doc in Firebase Firestore with Javascript... That doesn't just have the automatic generated ID
return addDoc(collection(db, "users"), { bio: signupForm['signup-bio'].value });
This is how I'm coding it could someone please show me where or how to add a custom ID to to the doc?
Thanks
Share Improve this question edited Dec 15, 2021 at 11:23 Wan33 asked Dec 15, 2021 at 10:53 Wan33Wan33 3032 silver badges13 bronze badges 3-
firebase.firestore().doc('yourCollection/' + customId).set({bio: value})
– PRSHL Commented Dec 15, 2021 at 10:56 - 1 Isn't this for version 8 and below? – Wan33 Commented Dec 15, 2021 at 11:17
- Oh nevermind, did not see the version 9 in the title sorry – PRSHL Commented Dec 15, 2021 at 11:24
4 Answers
Reset to default 4Ok, I figured it out...
To create a custom ID for a new doc is as follows...
setDoc(doc(db, 'collection', 'ID'), { feild: value, feild: value });
or in my case as an example...
setDoc(doc(db, 'users', (cred.user.uid), { bio: signupForm['signup-bio'].value });
This creates a new doc (and the users collection if it doesn't exist already) with the ID being the current logged in users UserID and the data in the doc is the value from a signup form called 'signup-bio'
For me the following worked:
await setDoc(doc(db, "collection/" + newId), { field: value} )
In order to set custom document IDs in Firestore, you need to use the set
method instead of add
:
db.collection("users").doc("YOUR_ID").set({
bio: signupForm['signup-bio'].value
});
You can refer to the official documentation on how to Set a document which states that:
To create or overwrite a single document, use the set() method:
// Add a new document in collection "cities"
db.collection("cities").doc("LA").set({
name: "Los Angeles",
state: "CA",
country: "USA"
})
.then(() => {
console.log("Document successfully written!");
})
.catch((error) => {
console.error("Error writing document: ", error);
});
If the document does not exist, it will be created. If the document does exist, its contents will be overwritten with the newly provided data, unless you specify that the data should be merged into the existing document...
For someone who using collection as variable / existing function.
Example in Typescript like this https://javascript.plainenglish.io/using-firestore-with-typescript-in-the-v9-sdk-cf36851bb099
Normal:
const docRef = doc(helloCol())
But you can also do something like…:
const docRef = doc(helloCol(), 'some-id')
// await setDoc(docRef, { /* data */ })
Without changing helloCol()