Firestore – это популярная база данных NoSQL, предоставляемая Firebase, которая широко используется при разработке мобильных и веб-приложений. В этой статье блога мы рассмотрим различные методы, доступные во Flutter, для получения одного документа из Firestore. Мы рассмотрим различные подходы и предоставим примеры кода, которые помогут вам понять, как эффективно и результативно получать данные. Итак, начнем!
Метод 1: использование DocumentReference и get()
Самый простой и понятный способ получить отдельный документ из Firestore — использовать класс DocumentReferenceи его get()метод. Вот пример:
import 'package:cloud_firestore/cloud_firestore.dart';
final CollectionReference usersCollection = FirebaseFirestore.instance.collection('users');
final DocumentReference documentRef = usersCollection.doc('user1');
documentRef.get().then((DocumentSnapshot snapshot) {
if (snapshot.exists) {
print('Document data: ${snapshot.data()}');
} else {
print('Document does not exist.');
}
}).catchError((error) {
print('Error getting document: $error');
});
Метод 2: использование StreamBuilder и снимков
Если вы хотите прослушивать обновления в реальном времени для одного документа, вы можете использовать виджет StreamBuilderвместе с snapshots()метод. Это позволяет вам автоматически обновлять пользовательский интерфейс вашего приложения при возникновении изменений. Вот пример:
StreamBuilder<DocumentSnapshot>(
stream: documentRef.snapshots(),
builder: (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {
if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
}
if (snapshot.connectionState == ConnectionState.waiting) {
return Text('Loading...');
}
if (snapshot.hasData && snapshot.data.exists) {
final data = snapshot.data.data();
return Text('Document data: $data');
} else {
return Text('Document does not exist.');
}
},
);
Метод 3: запрос с помощьюwhere() и get()
Если вам нужно получить один документ на основе определенных критериев, вы можете использовать метод where()в сочетании с get(). Это позволяет создавать более целевые запросы. Вот пример:
final QuerySnapshot snapshot = await usersCollection.where('age', isGreaterThan: 18).get();
if (snapshot.docs.isNotEmpty) {
final DocumentSnapshot document = snapshot.docs.first;
print('Document data: ${document.data()}');
} else {
print('No document found.');
}
В этой статье мы рассмотрели различные методы получения одного документа из Firestore с помощью Flutter. Мы рассмотрели базовый подход с использованием DocumentReferenceи get(), а также подход в реальном времени с использованием StreamBuilderи snapshots().. Кроме того, мы углубились в запросы с помощью where()и get()для получения документов на основе определенных критериев. Используя эти методы, вы можете эффективно получать данные из Firestore и создавать мощные приложения.