Firebase 9 Firestore ПОЛУЧИТЬ ВСЕ ДАННЫЕ О ДОКУМЕНТАХ ИЗ КОЛЛЕКЦИИ

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

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

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

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

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

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

Инициализация базы данных Firestore

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

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

Два аргумента метода doc()

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

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

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

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

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

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

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

Чтобы просмотреть каждый документ из коллекции городов, пройдитесь по объекту docsSnap с помощью метода forEach().

docsSnap.forEach(doc => {
    console.log(doc.data());
})
Вход в полноэкранный режим Выход из полноэкранного режима

Метод forEach() принимает в качестве аргумента функцию с параметром doc.

Примечание: Параметр doc не имеет никакого отношения к методу doc(), упомянутому выше.

Параметр doc будет получать документ из docsSnap на каждой итерации.

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

Чтобы получить идентификатор документа, обратитесь к свойству id объекта doc.

docsSnap.forEach(doc => {
    console.log(doc.id);
})
Вход в полноэкранный режим Выход из полноэкранного режима

Чтобы отловить любую ошибку на стороне клиента, оберните код await блоком try catch.

try {
    const docsSnap = await getDocs(colRef);
    docsSnap.forEach(doc => {
        console.log(doc.data());
        console.log(doc.id);
    })
} catch (error) {
    console.log(error);
}
Войти в полноэкранный режим Выход из полноэкранного режима

Один из способов проверить, есть ли в коллекции документ, прежде чем двигаться дальше.

try {
    const docsSnap = await getDocs(colRef);
    if(docsSnap.docs.length > 0) {
       docsSnap.forEach(doc => {
          console.log(doc.data());
          console.log(doc.id);
       })
    }
} catch (error) {
    console.log(error);
}
Вход в полноэкранный режим Выход из полноэкранного режима

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