Firestore – это мощная база данных NoSQL, предлагаемая Firebase, которая позволяет разработчикам хранить и извлекать данные для своих приложений. Одной из ключевых особенностей Firestore являются возможности запросов, которые обеспечивают эффективный и гибкий поиск данных. В этой статье блога мы рассмотрим различные методы запроса данных в Firestore, сопровождаемые разговорными объяснениями и примерами кода.
- Основные запросы.
Firestore предоставляет простые, но эффективные способы получения документов на основе значений полей. Вот пример получения всех документов из коллекции, где в поле «город» установлено значение «Нью-Йорк»:
const query = db.collection('cities').where('city', '==', 'New York');
query.get().then((snapshot) => {
snapshot.forEach((doc) => {
console.log(doc.id, '=>', doc.data());
});
});
- Составные запросы.
Составные запросы позволяют комбинировать несколько условий для получения документов, соответствующих определенным критериям. Например, найдем все города региона «США» с населением более 1 миллиона:
const query = db.collection('cities')
.where('region', '==', 'USA')
.where('population', '>', 1000000);
query.get().then((snapshot) => {
snapshot.forEach((doc) => {
console.log(doc.id, '=>', doc.data());
});
});
- Упорядочение и ограничение.
Firestore позволяет сортировать результаты запроса на основе определенных полей и ограничивать количество возвращаемых документов. Вот пример получения 5 крупнейших городов с самой высокой численностью населения:
const query = db.collection('cities')
.orderBy('population', 'desc')
.limit(5);
query.get().then((snapshot) => {
snapshot.forEach((doc) => {
console.log(doc.id, '=>', doc.data());
});
});
- Разбивка на страницы.
Для больших наборов данных разбивка на страницы имеет решающее значение, чтобы избежать одновременной загрузки всех документов. Firestore предлагает методы для разбивки результатов запроса на страницы с помощью курсоров. Давайте получим города группами по 10:
const query = db.collection('cities')
.orderBy('name')
.limit(10);
query.get().then((snapshot) => {
snapshot.forEach((doc) => {
console.log(doc.id, '=>', doc.data());
});
const lastVisible = snapshot.docs[snapshot.docs.length - 1];
const nextQuery = db.collection('cities')
.orderBy('name')
.startAfter(lastVisible)
.limit(10);
// Fetch the next batch of cities...
});
Firestore предоставляет разработчикам широкий спектр методов запросов для эффективного извлечения данных из базы данных NoSQL. В этой статье мы рассмотрели базовые запросы, составные запросы, упорядочивание и ограничение, а также методы нумерации страниц. Используя эти возможности запросов, вы можете создавать мощные и быстро реагирующие приложения с Firestore в качестве серверной части.