Firestore — это база данных документов NoSQL, предоставляемая Firebase, которая обычно используется в приложениях Flutter для хранения данных. При работе с Firestore получение идентификатора документа, связанного с конкретным документом, является общим требованием. В этой статье блога мы рассмотрим различные методы получения идентификатора документа в Firestore с помощью Flutter, а также примеры кода.
Метод 1: метод QuerySnapshot
import 'package:cloud_firestore/cloud_firestore.dart';
void getDocumentID() async {
QuerySnapshot querySnapshot = await FirebaseFirestore.instance
.collection('your_collection')
.get();
for (QueryDocumentSnapshot documentSnapshot in querySnapshot.docs) {
String documentId = documentSnapshot.id;
print('Document ID: $documentId');
}
}
Метод 2: метод StreamBuilder
import 'package:cloud_firestore/cloud_firestore.dart';
StreamBuilder<QuerySnapshot> buildStreamBuilder() {
return StreamBuilder<QuerySnapshot>(
stream: FirebaseFirestore.instance
.collection('your_collection')
.snapshots(),
builder: (context, snapshot) {
if (snapshot.hasData) {
List<DocumentSnapshot> documents = snapshot.data.docs;
for (DocumentSnapshot document in documents) {
String documentId = document.id;
print('Document ID: $documentId');
}
}
return Container();
},
);
}
Метод 3: метод DocumentReference
import 'package:cloud_firestore/cloud_firestore.dart';
void getDocumentID() {
DocumentReference documentReference = FirebaseFirestore.instance
.collection('your_collection')
.doc('your_document_id');
documentReference.get().then((DocumentSnapshot documentSnapshot) {
if (documentSnapshot.exists) {
String documentId = documentSnapshot.id;
print('Document ID: $documentId');
}
});
}
Метод 4: метод пользовательской модели
Если у вас есть собственный класс модели, представляющий ваши документы Firestore, вы можете определить свойство для хранения идентификатора документа и заполнить его во время извлечения данных. Вот пример:
import 'package:cloud_firestore/cloud_firestore.dart';
class YourModel {
String documentId;
// other properties
YourModel({this.documentId, /* other constructor arguments */});
factory YourModel.fromSnapshot(DocumentSnapshot snapshot) {
return YourModel(
documentId: snapshot.id,
// populate other properties from snapshot
);
}
}
void getDocumentID() {
DocumentReference documentReference = FirebaseFirestore.instance
.collection('your_collection')
.doc('your_document_id');
documentReference.get().then((DocumentSnapshot documentSnapshot) {
if (documentSnapshot.exists) {
YourModel model = YourModel.fromSnapshot(documentSnapshot);
print('Document ID: ${model.documentId}');
}
});
}
В этой статье мы рассмотрели несколько методов получения идентификатора документа в Firestore с помощью Flutter. К этим методам относятся метод QuerySnapshot, метод StreamBuilder, метод DocumentReference и использование пользовательской модели. Вы можете выбрать метод, который соответствует вашему конкретному случаю использования. Включив эти методы в свое приложение Flutter, вы сможете эффективно получать доступ к идентификаторам документов в Firestore и использовать их для улучшенного управления данными и манипулирования ими.
Не забудьте оптимизировать запросы Firestore и внедрить подходящую обработку ошибок, чтобы обеспечить удобство работы с пользователем. Приятного кодирования!