Правильный способ удалить-если-существует?

#node.js #google-cloud-firestore

#node.js #google-облако-firestore

Вопрос:

У меня есть вариант использования, когда мне нужно удалить документ, который может существовать, а может и не существовать. Я удаляю так

 db.collection('cities').doc('DC').delete();
 

Это работает нормально, но когда документ не существует, я получаю сообщение об ошибке в журнале, которое я бы предпочел не видеть. Я мог бы сначала прочитать документ, чтобы убедиться, что он существует, но это кажется расточительным. Каков правильный подход к удалению, если существует?

РЕДАКТИРОВАТЬ Я выполняю эту операцию с помощью облачных функций (JS)

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

1. Пожалуйста, укажите, какой язык или фреймворк вы используете?

Ответ №1:

 db.collection('cities').doc('DC').get().then(
     doc => {
        if (doc.exists) {
          db.collection('cities').doc('DC').delete().then(() => {
             console.log("Doc deleted!")
          })
        }
     }
 );
      
 

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

1. Итак, нам нужно прочитать документ, чтобы подтвердить его существование перед удалением?

2. В вашем примере db.collection('cities').doc('DC') это ссылка на документ. Вот некоторая информация: firebase.google.com/docs/reference/js /… , И то, что у вас есть, должно работать так, как ожидалось. Поймите, что он возвращает обещание, которое вам нужно будет дождаться разрешения, прежде чем узнать, было ли оно удалено. Я почти уверен, что это поиск, выполняющийся delete() по ссылке на несуществующий документ

Ответ №2:

Вы также можете использовать async / await и повторно использовать один и тот же документ для обоих действий

 const doc = db.collection('cities').doc('DC')
const snapshot = await doc.get()
if (snapshot.exists) await doc.delete()