streamByQueryWithConverter method
Stream<List<T> >
streamByQueryWithConverter({
- CollectionReferenceDef<
T> ? collectionReferenceQuery, - required String whereDescription,
Streams and converts documents matching a query
Returns real-time updates with automatic conversion to T
Requires _fromJson
configuration
Parameters:
collectionReferenceQuery
custom query to filter documents
whereDescription
description of the query for logging
Returns Stream of List<T> containing:
- Converted document data
- Real-time updates
Features:
- Custom query support
- Automatic type conversion
- Real-time updates
- Error logging
Example:
final stream = api.streamByQueryWithConverter(
collectionReferenceQuery: (ref) => ref.where('age', isGreaterThan: 18),
whereDescription: 'Adult users',
);
stream.listen((users) {
for (var user in users) {
print('Adult user: ${user.name}');
}
});
See also: streamByQuery raw data query streaming streamAllWithConverter unfiltered type-safe streaming
Implementation
Stream<List<T>> streamByQueryWithConverter({
CollectionReferenceDef<T>? collectionReferenceQuery,
required String whereDescription,
}) {
final path = _collectionPath();
_log.debug(
message: 'Finding stream by query with converter..',
sensitiveData: SensitiveData(
path: path,
whereDescription: whereDescription,
),
);
final query = collectionReferenceQuery
?.call(listCollectionReferenceWithConverter()) ??
listCollectionReferenceWithConverter();
return query
.snapshots()
.map(
(event) => event.docs.map((e) => e.data()).toList(),
)
.handleError(
(error, stackTrace) {
_log.error(
message: 'Error streaming collection by query with converter',
sensitiveData: SensitiveData(
path: path,
whereDescription: whereDescription,
),
error: error,
stackTrace: stackTrace,
);
throw TurboFirestoreException.fromFirestoreException(
error,
stackTrace,
path: path,
query: whereDescription,
);
},
);
}