最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Firebase V9 - Custom 'Doc ID' Upon Creation (Javascript) - Stack Overflow

programmeradmin4浏览0评论

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
Add a ment  | 

4 Answers 4

Reset to default 4

Ok, 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()

发布评论

评论列表(0)

  1. 暂无评论