Javascript 如何根据内容获取Firestore文档ID?

Javascript 如何根据内容获取Firestore文档ID?,javascript,firebase,google-cloud-firestore,document,Javascript,Firebase,Google Cloud Firestore,Document,我正在尝试通过单击事件删除firestore文档 这是我到目前为止所拥有的x是我从firestore获得的文档id。但是如何根据页面中显示的内容动态更改ID?这样用户就可以删除他们想要的内容 var deleteContent = document.getElementById('delete'); deleteContent.addEventListener('click', function(e) { // get current document ID x = 'poOj

我正在尝试通过单击事件删除firestore文档

这是我到目前为止所拥有的
x
是我从firestore获得的文档id。但是如何根据页面中显示的内容动态更改ID?这样用户就可以删除他们想要的内容

var deleteContent = document.getElementById('delete');
deleteContent.addEventListener('click', function(e) {
    // get current document ID

    x = 'poOjcQce2iiKzp2FaFVA'
    var getId = db.collection("checkin").doc(x);

    getId.delete().then(function() {
        console.log(" successfully deleted!");
    }).catch(function(error) {
        console.error("Error removing document: ", error);
    });

});

感谢Firebase Cloud Firestore让您能够。本质上,您可以在
db.collection().where()
子句中提供一个条件,该条件将过滤符合该条件的所有文档

出于说明目的,假设
a
集合中的文档遵循以下结构:
{id,'123',name:'test',color:'red'}
。如果您想获取所有红色文档,只需调用
db.collection('a')。其中('color','=','red')
,然后您就可以对其进行迭代以处理符合该条件的每个文档

此外,在您的特定情况下,假设您的文档结构是
{id,content}
,您可以尝试以下方法:

var deleteContent=document.getElementById('delete');
deleteContent.addEventListener('click',函数(e){
//获取当前文档ID
让docodelete=db.collection(“签入”)。其中('content','==','content'u GOES'u HERE')
x=docodelete.id;
var getId=db.collection(“checkin”).doc(x);
getId.delete().then(函数()){
log(“已成功删除!”);
}).catch(函数(错误){
console.error(“删除文档时出错:”,错误);
});
});
但是,一种更简单的方法是,每当读取特定文档时,将文档id存储在应用程序中的某个位置,例如本地存储或会话存储。因此,您可以在需要时随时引用文档id。例如,假设您在一个onLoad事件处理程序中获取用户的所有文档——假设您有id为“content1”、“content2”、“content3”等的HTML元素,并且它是显示文档内容的地方。您可以尝试以下方法:

让userId=123;
[…]onload=()=>{
//获取属于此用户的所有文档
设i=0;
让docs=[];
让documents=db.collection('posts')。其中('userId','=',userId);
documents.forEach(doc=>{
document.getElementById(`content${i}`)。innerHTML=JSON.stringify(doc.data());//只是确定字符串化
/**
*在sessionStorage中添加文档id的额外步骤,以便我们以后可以引用它
*/
htmlId=‘内容’+i;
sessionStorage.setItem(htmlID,doc.id);
})
}
在这样做时,您可以简单地引用文档id,如
sessionStorage.getItem('content2')


请注意,在我列出的任何一个例子中,都需要做大量的准备,以使这一切尽可能顺利。然而,你难道不同意程序员仅仅是一个为了在以后的使用中使事情变得更容易而花费数小时在需要几分钟的事情上的人吗

别担心,祝你好运!