#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()