findByQuery method
Future<FeedbackResponse<List<Map<String, dynamic> > > >
findByQuery({
- required CollectionReferenceQuery<
Map< collectionReferenceQuery,String, dynamic> > - required String whereDescription,
Finds documents based on a given collectionReferenceQuery
.
Use the whereDescription
to describe what your collectionReferenceQuery
is looking for so that it
shows proper logging in your console.
This method returns raw data in the form of a List<Map<String, dynamic>>. If _tryAddLocalId
is
true then the map will also contain a local id field based on the _idFieldName
specified in the constructor so you may retrieve document id's more easily after serialization.
If you rather want to convert this data into a list of T
immediately you should use the
findByQueryWithConverter method instead. Make sure to have specified the _toJson
and _fromJson
methods or else the FirestoreApi will not know how to convert the data to T
.
Implementation
Future<FeedbackResponse<List<Map<String, dynamic>>>> findByQuery({
required CollectionReferenceQuery<Map<String, dynamic>>
collectionReferenceQuery,
required String whereDescription,
}) async {
try {
_log.info(
message: 'Finding without converter, with custom query..',
sensitiveData: _shouldNotSensitiveInfo
? null
: SensitiveData(
path: _collectionPath(),
whereDescription: whereDescription,
),
);
final result = (await collectionReferenceQuery(
findCollection(),
).get(_getOptions))
.docs
.map(
(e) => e.data(),
)
.toList();
_logResultLength(result);
return _responseConfig.searchSuccessResponse(
isPlural: result.isPlural,
result: result,
);
} catch (error, stackTrace) {
_log.error(
message: 'Unable to find documents with custom query',
sensitiveData: _shouldNotSensitiveError
? null
: SensitiveData(
path: _collectionPath(),
whereDescription: whereDescription,
),
error: error,
stackTrace: stackTrace,
);
return _responseConfig.searchFailedResponse(isPlural: true);
}
}