streamByQuery method
Stream<List<Map<String, dynamic> > >
streamByQuery({
- required CollectionReferenceDef<
Map< ? collectionReferenceQuery,String, dynamic> > - required String whereDescription,
Streams documents matching a query
Returns real-time updates for filtered documents Provides raw Firestore data without conversion
Parameters:
collectionReferenceQuery custom query to filter documents
whereDescription description of the query for logging
Returns Stream of List containing:
- Document data
- Real-time updates
Features:
- Custom query support
- Real-time updates
- Raw data access
- Error logging
Example:
final stream = api.streamByQuery(
collectionReferenceQuery: (ref) => ref.where('age', isGreaterThan: 18),
whereDescription: 'Adult users',
);
stream.listen((users) {
print('Got ${users.length} adult users');
});
See also: streamByQueryWithConverter type-safe query streaming streamAll unfiltered streaming
Implementation
Stream<List<Map<String, dynamic>>> streamByQuery({
required CollectionReferenceDef<Map<String, dynamic>>?
collectionReferenceQuery,
required String whereDescription,
}) {
final path = _collectionPath();
_log.debug(
message: 'Finding stream by query..',
sensitiveData: TSensitiveData(
path: path,
whereDescription: whereDescription,
),
);
final query =
collectionReferenceQuery?.call(listCollectionReference()) ??
listCollectionReference();
return query
.snapshots()
.map(
(event) => event.docs.map((e) => e.data()).toList(),
)
.handleError(
(Object error, StackTrace stackTrace) {
final exception = _createException(
error: error,
stackTrace: stackTrace,
path: path,
query: whereDescription,
operationType: TOperationType.stream,
);
_log.error(
message: 'Error streaming collection by query',
sensitiveData: TSensitiveData(
path: path,
whereDescription: whereDescription,
operationType: TOperationType.stream,
fullPath: path,
),
error: error,
stackTrace: stackTrace,
);
throw exception;
},
);
}