Как я могу получить идентификатор выбранного документа, получить заголовок и использовать / сохранить его в firestore?

#javascript #html #firebase #google-cloud-firestore #onclicklistener

# #javascript #HTML #firebase #google-облако-firestore #onclicklistener onclicklistener

Вопрос:

 const setupProducts = (data) => {
  
    if (data.length) {
      let html = '';
      data.forEach(doc => {
        const product = doc.data();
        const li = `
          <li>
            <div class="collapsible-header grey lighten-4"> ${product.title} </div>
            <div class="collapsible-header grey lighten-4">  ${doc.id} </div>
            <div class="collapsible-body white"> ${product.content} 
            <a href="" class="secondary-content">
            <a class="btn orange modal-trigger" >Get ID</a>
            </a>
          </li>
        `;
        html  = li;
      });
      productList.innerHTML = html
    } else {
      productList.innerHTML = '<h5 class="center-align">Login to view products</h5>';
    }
  };
 

Моя идея заключается в том, что я хочу получить идентификатор, нажав на документ, а затем product.title нажав на db.collection('activeWorks').doc(doc.id or product.id (I don't know what's right...)).set ввод . Я понятия не имею, как это сделать, пожалуйста, помогите

Ответ №1:

Возможно, сделайте что-то вроде этого: установите id для тега каждого <li> элемента идентификатор документа из Firestore, затем прикрепите триггер onclick события

   const setupProducts = (data) => {

if (data.length) {
  let html = '';
  productList.innerHTML = ''
  data.forEach(doc => {
    const product = doc.data();
    const li = `
      <li id="${doc.id}">
        <div class="collapsible-header grey lighten-4"> ${product.title} </div>
        <div class="collapsible-header grey lighten-4">  ${doc.id} </div>
        <div class="collapsible-body white"> ${product.content} 
        <a href="" class="secondary-content">
        <a class="btn orange modal-trigger" >Get ID</a>
        </a>
      </li>
    `;
    html  = li;
    productList.innerHTML  = html
    document.getElementById(doc.id).onclick = () => {
        // do firestore stuff here
        // db.collection('activeWorks').doc(doc.id).set(your_data)
    }
  });
} else {
  productList.innerHTML = '<h5 class="center-align">Login to view products</h5>';
}
};
 

Если я неправильно понял ваш вопрос, прошу прощения

Комментарии:

1. Спасибо за вашу помощь, если я попробую это сделать, всегда будет ошибка: «Uncaught TypeError: document.getElementById(…) равно нулю»