Как обновить базу данных и пользовательский интерфейс с помощью Firebase Web - PullRequest
1 голос
/ 19 января 2020

Я пытаюсь выяснить, как обновить базу данных и пользовательский интерфейс с помощью входов и кнопки с помощью Firebase Web. Основная проблема в том, что я не знаю, как именно получить идентификатор документа или, может быть, есть способ использовать ввод для выбора, например, имени и изменения других значений. Пока мне удается выяснить следующий код:

function updateFirebase() {
    const fb = firebase.database().ref()
    //get field value
    name = document.getElementById('uname').value
    specialist = document.getElementById('uspecialist').value

    data = {name,specialist}
    //update database
    fb.child('guides/').update(data);
  }
 <div>
            <input type="text" name="txt" id="uname">
            <input type="text" name="txt" id="uspecialist">
            <button onclick="updateFirebase()">Update</button>
        </div>

И я использую следующий код для записи и отображения данных из базы данных:

Вот как я записываю значения в базу данных :

db.collection("guides").onSnapshot(snapshot => {
      setupGuides(snapshot.docs);
  });

 const createForm = document.querySelector('#create-form');
  createForm.addEventListener('submit', (e) => {
    e.preventDefault();
  
    db.collection('guides').add({
      image: createForm['image'].value,
      name: createForm['name'].value,
      specialist: createForm['specialist'].value,
      phone: createForm['phone'].value,
      address: createForm['address'].value
      
    }).then(() =>{
  
     //clear data
      document.getElementById('create-form').reset();
    })
  })
<form id="create-form">
                <h1 class="tigri">Прикачване на доктори</h1>
                <p>
                    <label>Name</label>
                    <input type="text" name="Name" id="name" required>
                </p>
                <p>
                    <label>Specialist</label>
                    <input type="text" name="Specialist" id="specialist" required>
                </p>
                <p>
                    <label>Phone</label>
                    <input type="text" name="Phone" id="phone" required>
                </p>
                <p>
                    <label>Image</label>
                    <input type="text" id="image">
                        
                </p>
                <p>
                    <label>Address</label>
                    <input type="text" name="Address" id="address" required>
                </p>
                <p class="full">
                    <button type="submit">Създаване на доктори</button>
                </p>      
            </form>
        </div> 

И вот как я отображаю это на странице:

const guideList = document.querySelector('.guides');

const setupGuides = (data) => {

let html = ' ';
data.forEach(doc => {
   const guide = doc.data();
   table= `
        <table style="display: inline; border-spacing: 20px 3px; line-height: 2;">
            <span class="close-x admin" style="display: none"</span>
            <tr>
                <td style="text-align: center"><img src="${guide.image}" height="200" width="180" object-fit: contain;></td>
            </tr>
            <tr>
                <th style="text-align: center">${guide.name}</th>
            </tr>
            <tr style=""padding-top:20px;>
                <td style="text-align: center">${guide.specialist}</td>
            </tr>
            <tr>
                <td style="text-align: center">${guide.phone}</td>
            </tr>
            <tr>
                <td style="text-align: center">${guide.address}</td>
            </tr>
            
    </table>
   `;
   html += table;
 });
    guideList.innerHTML = html;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...