Как можно одновременно одним событием «щелкнуть» удалить два документа из двух коллекций в моем облачном хранилище? - PullRequest
0 голосов
/ 12 июня 2019

Я просто хочу удалить несколько документов из двух разных коллекций (куст и запись). как мне это сделать? с двумя обещаниями или как?

мой приведенный ниже код работает, но в тот момент, когда я добавляю куда-либо "location.reload ()", удаляется только выбранный куст. страница просто не работает с этой функцией обновления ...

пожалуйста, помогите ... заранее спасибо!

    deleteBtn.addEventListener('click', (e) => {
      let id = e.target.parentElement.parentElement.getAttribute('data-id');
      var x = confirm("Deleting a hive will delete all its records.  Click 'Ok' to delete and 'Cancel' to return.");
      if(x){
// delete clicked hive
        db.collection('hive').doc(id).delete()
          .then(function () {
          })
          .catch(function (error) {
          })
// delete all entries from within clicked hive
        var deleteEntry = db.collection('entry').where('hive_id', "==", id);
        deleteEntry.get()
          .then(function(querySnapshot) {
            querySnapshot.forEach(function(doc) {
            doc.ref.delete()
            });
          })
          .catch(function (error) {
          })
      }else{
      }
    })

приведенный выше подход может быть совершенно неправильным и не совсем чистым ... поэтому я просто напишу здесь необходимые результаты ...

после нажатия deleteBtn и подтверждения удаления выбранный куст должен быть удален, а все записи из этого куста также должны быть удалены. страница должна обновиться и показать, что улей больше нет. (обратите внимание, что все записи имеют один и тот же улей и будут иметь идентификатор hives в качестве свойства)

СПАСИБО!

1 Ответ

0 голосов
/ 14 июня 2019

Это похоже на типичную асинхронную проблему. Попробуйте это: добавьте код удаления для коллекции записей в обещание удаления кода улья.

   deleteBtn.addEventListener('click', (e) => {
   let id = e.target.parentElement.parentElement.getAttribute('data-id');
   var x = confirm("Deleting a hive will delete all its records.  Click 'Ok' to   delete and 'Cancel' to return.");
   if(x){
   // delete clicked hive
    db.collection('hive').doc(id).delete()
      .then(function () {

   // delete all entries from within clicked hive
    var deleteEntry = db.collection('entry').where('hive_id', "==", id);
    deleteEntry.get()
      .then(function(querySnapshot) {
        querySnapshot.forEach(function(doc) {
        doc.ref.delete()
        });
      })
      .catch(function (error) {
      })

      })
      .catch(function (error) {
      })

  }else{
  }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...