【问题标题】:How to get the document id of the document on which user clicks?如何获取用户点击的文档的文档ID?
【发布时间】:2020-04-08 06:49:42
【问题描述】:

JS:

function getDataOfBus() {
   var dates = document.getElementById('departure-date').value.toString();
   var fromd = document.getElementById('from-dest').value.toString()
   var tod = document.getElementById('to-dest').value.toString()
   console.log(dates + " -" + fromd + " -" + tod)

   db.collection('Buses').where("DepartureDate", "==", dates).where("To", "==", tod).
   where("From", "==", fromd).get().then((snapshot) => {
      let html = '';
      snapshot.forEach((busDatas) => {
         busData = busDatas.data()
         console.log(busData.id)
         html += `
           <div class="single-room-area d-flex align-items-center mb-50 wow fadeInUp" data-wow-delay="100ms" id="prince">
            <div class="room-thumbnail">
                <img src="${busData.ImageLink}" alt="">
            </div>
            <div class="room-content">
                <h2><a href="javascript:setImage();">${busData.TourName}</h2>
                <h6>${busData.From} to ${busData.To}</h6>
                <h4>₹ ${busData.SeatPrice} </h4>
                <div class="room-feature">
                    <h6>Boarding Point  <span>${busData.BoardingTime}</span></h6>
                    <h6>Dropping Point <span>${busData.DroppingTime}</span></h6>
                    <h6>Seats Left <span>${busData.SeatsLeft}</span></h6>
                    <h6>Total Time <span>${busData.TotalTime}</span></h6>
                    <h6>Departure Date <span>${busData.DepartureDate}</span></h6>
                </div>
            </div>
           </div>
         `

         document.getElementById('bus-container-dynamic').innerHTML = html;
      }) // End foreach
   }) // End then

}

function setImage() {

}   

我已经执行了上面的代码来显示来自云 Firestore 的文档。但我不知道如何获取用户单击的文档的文档 ID 并在 setImage() 函数中使用该文档 ID?

【问题讨论】:

  • busData.id 中没有吗?
  • 我越来越不确定,我想点击 TourName

标签: javascript html firebase google-cloud-firestore


【解决方案1】:

通过执行busData = busDatas.data(),您将data() 方法返回的对象分配给busData 变量,但该对象不包含文档ID。

您应该使用另一个变量来保存此值或将文档 ID 分配给此 busData 对象。以下(实施第二个选项)应该可以解决问题:

snapshot.forEach((busDatas) => {

    var busData = busDatas.data()
    busData.docId = busDatas.id
    //...

    <h2><a href="javascript:setImage('${busData.docId}');">${busData.TourName}</h2>
    //...

});

busDatas(带 s)是 QueryDocumentSnapshot,您使用其 id 属性。


您也可以使用spread syntax,如下:

var busData = { docId: busDatas.id, ...busDatas.data() }

【讨论】:

  • 我从您调用此函数 setImage() 的位置收到错误,表明 VM1498:1 Uncaught ReferenceError: JYD99NsjS1VYCvZbG8Uo 未在 :1:10 处定义(其中 JYD99NsjS1VYCvZbG8Uo 是文档 ID)int这一行

    ${busData.TourName}

  • 查看更新,我忘记在${busData.docId} 周围添加单引号。然后将其视为变量名而不是字符串值。
猜你喜欢
  • 1970-01-01
  • 2014-06-10
  • 2021-07-20
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
  • 2018-09-03
  • 1970-01-01
  • 2020-03-09
相关资源
最近更新 更多