Firebase 9 Firestore Получение документа по идентификатору с помощью метода getDoc()

Узнайте, как получить документ по идентификатору с помощью метода getDoc() в базе данных Firebase версии 9 Cloud Firestore.

  • Получить все документы из коллекции
  • Получить документ по идентификатору → Вы здесь

В примере Firestore Database есть коллекция городов, в которой есть четыре документа, как на скриншоте ниже.

Давайте получим первый документ из коллекции городов по идентификатору.

В данном случае: документ Edmonton, используя его ID (2l3bcSGs2vZBIc3RODwp).

Импортируем базу данных Firestore и деструктурируем три необходимых нам метода:

  • getFirestore() → База данных Firestore
  • doc() → В качестве аргументов принимает ссылки на базу данных, имя коллекции и ID документа
  • getDoc() → Запрос getDoc() получает данные конкретного документа из коллекции на основе ссылок, указанных в методе doc().
import { getFirestore, doc, getDoc } from https://www.gstatic.com/firebasejs/9.8.4/firebase-firestore.js";
Вход в полноэкранный режим Выход из полноэкранного режима

В этом примере оператор import использует CDN-версию Firebase SDK.

Инициализируйте базу данных Firestore:

const db = getFirestore();
Вход в полноэкранный режим Выход из полноэкранного режима

Метод getDoc() принимает единственный аргумент, которым является метод doc().

Три аргумента метода doc() следующие:

  • База данных → db
  • Имя коллекции → в данном случае города (см. скриншот выше)
  • ID документа → 2l3bcSGs2vZBIc3RODwp в данном случае (см. скриншот выше).

Вызовите метод doc(), передайте три аргумента и присвойте их константе docRef (краткая форма для ссылки на документ).

const docRef = doc(db, "cities", "2l3bcSGs2vZBIc3RODwp");
Войдите в полноэкранный режим Выход из полноэкранного режима

Вызовите метод getDoc(), передав ему в качестве аргумента docRef.

Метод getDoc() вернет обещание, добавьте перед ним ключевое слово await.

Присвойте его константе docSnap (сокращение от document snapshot).

const docSnap = await getDoc(docRef);
Вход в полноэкранный режим Выход из полноэкранного режима

Чтобы получить фактические данные документа, вызовите метод data() объекта docSnap.

docSnap.data();
Вход в полноэкранный режим Выход из полноэкранного режима

Оберните асинхронный запрос блоком try catch, чтобы обработать ошибку на стороне клиента, если таковая возникнет.

try {
    const docSnap = await getDoc(docRef);
    console.log(docSnap.data());
} catch(error) {
    console.log(error)
}
Войти в полноэкранный режим Выход из полноэкранного режима

Перед использованием целевого документа проверьте, существует ли он на самом деле.

try {
    const docSnap = await getDoc(docRef);
    if(docSnap.exists()) {
        console.log(docSnap.data());
    } else {
        console.log("Document does not exist")
    }

} catch(error) {
    console.log(error)
}
Войти в полноэкранный режим Выход из полноэкранного режима

Оцените статью
devanswers.ru
Добавить комментарий