Узнайте, как получить все данные о документах из коллекции в базе данных 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);
}