Firestore – это облачная база данных NoSQL, предоставляемая Google Firebase, которая позволяет разработчикам хранить данные своих приложений и управлять ими. В этой статье мы рассмотрим различные методы сортировки и фильтрации данных в Firestore на примерах кода. Независимо от того, создаете ли вы веб-приложение или мобильное приложение, понимание этих методов поможет вам эффективно извлекать данные и манипулировать ими.
- Базовая сортировка.
Firestore позволяет сортировать данные по определенному полю. Например, давайте рассмотрим коллекцию «пользователей» с документами, содержащими поле «имя». Чтобы отсортировать документы в порядке возрастания на основе поля «имя», вы можете использовать следующий фрагмент кода:
const usersRef = db.collection('users');
usersRef.orderBy('name').get()
.then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(doc.data());
});
});
- Сортировка по убыванию.
Чтобы отсортировать документы по убыванию, вы можете использовать методorderByвместе с модификаторомdesc. Вот пример:
const usersRef = db.collection('users');
usersRef.orderBy('name', 'desc').get()
.then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(doc.data());
});
});
- Фильтрация данных.
Firestore позволяет фильтровать данные на основе определенных условий. Например, предположим, что у нас есть коллекция «продуктов» с документами, содержащими поле «цена». Чтобы отфильтровать товары по цене менее 50 долларов США, вы можете использовать следующий код:
const productsRef = db.collection('products');
productsRef.where('price', '<', 50).get()
.then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(doc.data());
});
});
- Объединение сортировки и фильтрации.
Вы также можете комбинировать сортировку и фильтрацию для получения более конкретных данных. Например, давайте отсортируем пользователей по возрасту и отфильтруем только тех, кто старше 18 лет:
const usersRef = db.collection('users');
usersRef.where('age', '>', 18).orderBy('age').get()
.then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(doc.data());
});
});
- Разбиение на страницы с сортировкой и фильтрацией.
При работе с большими наборами данных часто необходимо реализовать разбиение на страницы. Для этого в Firestore предусмотрены методыstartAfterиlimit. Вот пример сортировки, фильтрации и разбивки пользователей по страницам:
const usersRef = db.collection('users');
usersRef.where('age', '>', 18).orderBy('age').startAfter(lastVisibleDoc).limit(10).get()
.then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(doc.data());
});
});
В этой статье мы рассмотрели различные методы сортировки и фильтрации данных в Firestore. Мы рассмотрели базовую сортировку, сортировку по убыванию, фильтрацию данных на основе условий, объединение сортировки и фильтрации, а также реализацию нумерации страниц. Используя эти методы, вы можете эффективно извлекать данные в Firestore и манипулировать ими для нужд вашего приложения.
Не забудьте оптимизировать запросы и индексы, чтобы обеспечить оптимальную производительность при работе с большими наборами данных. Firestore предоставляет мощные возможности запросов, которые помогут вам создавать надежные и масштабируемые приложения.