# Class: FlowQuery<TResults, TState>
A FlowQuery defines a Flo.w reactive dataset query that is executed in response to changes
in application state properties.
To register a Flo.w reactive dataset query call the StateStore.registerQuery method.
The query is defined by a supplied query definition function that takes the current application state as an argument and should return a FlowQueryDefinition. Changes in application state properties referenced in the function will trigger the query to execute. For example,
(state) => {
return {
datasetId: 'airquality_with_params',
limit: 10,
params: {no2_filter: state.filterValue}
};
}
To transform the returned data specify a result transform function, which accepts the raw query results as an array and should return a transformed value. For example,
(results) => {
// Return the first results object from the results array
if (results && results.length) {
return results[0];
} else {
return null;
}
}
FlowQuery exposes two reactive properties:
# Type parameters
| Name | Default | Description |
|---|---|---|
TResults | - | Type of returned data (including transformation, if any). |
TState | any | Type of context state. ``` |
# Hierarchy
- FlowQuery
# Constructors
# constructor
+ new FlowQuery(context: FlowCoreContext<TState>, queryId: string, queryFn: FlowQueryDefinitionFn<TState>, resultTransformFn?: FlowQueryResultTransformFn<TResults>, delay?: number): FlowQuery
Constructs a FlowQuery instance.
# Parameters:
| Name | Type | Default value | Description |
|---|---|---|---|
context | FlowCoreContext<TState> | - | Flo.w context. |
queryId | string | - | Query ID. |
queryFn | FlowQueryDefinitionFn<TState> | - | Query definition. |
resultTransformFn? | FlowQueryResultTransformFn<TResults> | - | Result transform function. |
delay | number | 0 | Debounce delay (milliseconds) |
Returns: FlowQuery
# Properties
# queryId
• Readonly queryId: string
Query ID.
# Accessors
# busy
• get busy(): boolean
true if the query is currently executing and awaiting results.
Use this property to indicate busy state in the UI.
Returns: boolean
# error
• get error(): Error
If non-null, indicates that a query error occurred
Use this property to indicate error state in the UI.
Returns: Error
# results
• get results(): TResults
The query results.
Returns: TResults
# Methods
# cancel
▸ cancel(): void
Cancel the currently running query.
Returns: void
# runQueryImmediate
▸ runQueryImmediate(): Promise<TResults>
Manually run the query. This method is provided for debugging purposes and should not generally be used. Rely on reactivity to run queries when required.
Returns: Promise<TResults>