簡體   English   中英

Firebase:如何將自動生成的文檔 ID 添加到 svelte 中的文檔?

[英]Firebase: how to add auto-generated document id to the document in svelte?

在 svelte 中添加具有自動生成的 id 的 firebase 文檔的正確方法是什么?

到目前為止,我正在使用以下代碼片段:

db.collection('colname').add({ id:'temp', text:'sometext' }).then(
    result=>{
        db.collection('colname').doc(result.id).update({id: result.id});
    }
);

我不喜歡這個解決方案:

  1. 與數據庫有 2 個單獨的交互;
  2. Svelte 將內容呈現 2 次,即在每次數據庫交互之后。 這也是我需要在add()中添加一個臨時id的原因。

有沒有更簡潔的解決方案?


上下文

我想將文檔作為參數傳遞給一個苗條的 SvelteSubComponent:

let docs = [];
db.collection('colname').onSnapshot(data =>{
    docs=data.docs;    
});

(...)

{#each docs as doc}
<SvelteSubComponent {...doc.data()}/>
{/each}

我希望能夠訪問 SvelteSubComponent 中的文檔 ID。

如果您只需要一個唯一的隨機 ID,我建議您使用UUID 庫npm install uuid ),特別是UUID v4

然后您將按如下方式使用它:

import { v4 as uuidv4 } from 'uuid';
...
db.collection('colname').add({ id: uuidv4(), text:'sometext' }).then(...);

生成的 ID 將是一個唯一的隨機生成的字符串,形式為'1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'

add()方法每次都會生成一個隨機的文檔 ID。 如果您還想在文檔數據中添加文檔 ID,那么最好事先生成 ID,然后使用set()創建具有該 ID 的文檔:

const docId = db.collection('colname').doc().id

db.collection('colname').doc(docId).set({ id: docId, text:'sometext' }).then(() => {
  console.log("Document added")
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM