redux-data-service > DataService
DataService
is an IService
for marshalling data (by default, with an external service such as a REST end point). To use this class, extend it and set the name
and ModelClass
fields in the child class.
The default IAdapter
for this class is a RestAdapter
. It uses the Service's name
to determine the name of the corresponding API end-point. env.process.API_URL
as the API root url. To override this default functionality, the _adapter
property should be set on the child class.
The default ISerializer
for this class is a RestSerializer
. The _serializer
property should be set on the child class if you want to:
- Change how the model is serialized or which values should be omitted
- Change how the incoming data is transformed when the model is created abstract:
class:
T : IModelData
BaseService<IDataServiceStateRecord<T
>>
↳ DataService
- AdapterClass
- MapperClass
- ModelClass
- SerializerClass
- _adapter
- _mapper
- _serializer
- internalActions
- internalEpics
- internalReducers
- internalSelectors
- internalTypes
- name
- observablesByIdCache
- observablesByIdsCache
- observablesByQueryCache
- shadowObject
- dispatch
- state$
- createActions
- createEpics
- createNew
- createReducers
- createSelectors
- createTypes
- deleteRecordEpic
- fetchAllEpic
- getAll
- getById
- getByIds
- getByQuery
- getDefaultQueryParams
- getDefaultState
- getShadowObject
- makeActionCreator
- makeActionType
- patchRecordEpic
- updateRecordEpic
- getStateObservable
- registerDispatch
- setStateObservable
● AdapterClass: IAdapterFactory<any
>
Defined in Services/DataService/DataService.ts:93
● MapperClass: IMapperFactory<T
, R
>
Defined in Services/DataService/DataService.ts:94
● ModelClass: IModelFactory<T
>
Defined in Services/DataService/DataService.ts:92
● SerializerClass: ISerializerFactory<T
, any
>
Defined in Services/DataService/DataService.ts:95
● _adapter: IAdapter<any
>
Defined in Services/DataService/DataService.ts:97
● _mapper: IMapper<any
>
Defined in Services/DataService/DataService.ts:98
● _serializer: ISerializer<any
, R
>
Defined in Services/DataService/DataService.ts:99
● internalActions: IActionCreators
Inherited from BaseService.internalActions
Defined in Services/BaseService.ts:45
● internalEpics: IActionEpic[]
Inherited from BaseService.internalEpics
Defined in Services/BaseService.ts:44
● internalReducers: IReducers<IDataServiceStateRecord<T
>>
Inherited from BaseService.internalReducers
Defined in Services/BaseService.ts:43
● internalSelectors: ISelectors
Inherited from BaseService.internalSelectors
Defined in Services/BaseService.ts:46
● internalTypes: IActionTypes
Inherited from BaseService.internalTypes
Defined in Services/BaseService.ts:47
● name: string
Implementation of IService.name
Inherited from BaseService.name
Defined in Services/BaseService.ts:39
● observablesByIdCache: object
Defined in Services/DataService/DataService.ts:102
● observablesByIdsCache: object
Defined in Services/DataService/DataService.ts:103
● observablesByQueryCache: object
Defined in Services/DataService/DataService.ts:104
● shadowObject: IModel<T
> = null
Defined in Services/DataService/DataService.ts:101
● dispatch: function
Inherited from BaseService.dispatch
Defined in Services/BaseService.ts:41
▸(action: IAction): void
Parameters:
Name | Type |
---|---|
action | IAction |
Returns: void
● state$: any
Inherited from BaseService.state$
Defined in Services/BaseService.ts:42
getactions(): IActionCreators
Inherited from BaseService.actions
Defined in Services/BaseService.ts:205
Returns a map of IActionCreators, which when dispatched to Redux, one or many Reducers or epics may act on that IAction.
Returns: IActionCreators
getadapter(): IAdapter<any
>
Defined in Services/DataService/DataService.ts:106
Returns: IAdapter<any
>
getepics(): IActionEpic[]
Inherited from BaseService.epics
Defined in Services/BaseService.ts:248
Returns an array of RxJS Observeable Epics from redux-observable, which are observers that are always listening for a given ActionType. They are useful for triggering side effects (such as loading data asynchronously) in response to an IAction via chainable, asynchronous "streams".
They will usually emit one or many Actions to pass data into Redux (via a IReducer) or to trigger other Epics. Not only can they be daisy-chained in this manner, RxJS also supports a variety of other common use-cases such as throttling/debouncing and retrying failed promises.
Notes:
- When an IAction is dispatched to Redux, it hits the reducers BEFORE the epics.
- Before you can use something from RxJS (such as an operator), you must import it first.
Returns: IActionEpic[]
getmapper(): IMapper<any
, any
>
Defined in Services/DataService/DataService.ts:115
Returns: IMapper<any
, any
>
getreducer(): IReducer<IDataServiceStateRecord<T
>>
Inherited from BaseService.reducer
Defined in Services/BaseService.ts:170
Returns a single IReducer function which triggers the methods mapped in the internal reducers
object to the given IAction type.
This is the function that is actually injected into and later triggered by Redux.
Returns: IReducer<IDataServiceStateRecord<T
>>
getreducers(): IReducers<IDataServiceStateRecord<T
>>
Inherited from BaseService.reducers
Defined in Services/BaseService.ts:156
Return a map of functions which are triggered by the IReducer for a given ActionType. They are used to update the Redux state in response to a given IAction.
Like a reducer, they are given the Redux state
object and the action
that was triggered and should return a new copy of the immutable state. However, these are not individually added to Redux, but rather through the single reducer function returned for this IService.
Returns: IReducers<IDataServiceStateRecord<T
>>
getselectors(): ISelectors
Inherited from BaseService.selectors
Defined in Services/BaseService.ts:224
Returns an object of selectors using Reselect. ISelectors are useful for efficiently filtering data from the Redux state.
ISelectors are composable: a selector may be built from other selectors
ISelectors are memoized: the output from each selector is cached, so future requests will not require a recompute unless its inputs change
Returns: ISelectors
getserializer(): ISerializer<any
, R
>
Defined in Services/DataService/DataService.ts:124
Returns: ISerializer<any
, R
>
gettypes(): IActionTypes
Inherited from BaseService.types
Defined in Services/BaseService.ts:191
Returns a map of IActionTypes, which are string "constants" that represent the type of an IAction. When an IAction is dispatched to Redux via an IActionCreator, one or many reducers or epics may act on that IAction
Returns: IActionTypes
▸ createActions(): IActionCreators
Overrides BaseService.createActions
Defined in Services/DataService/DataService.ts:284
Returns: IActionCreators
▸ createEpics(): IActionEpic[]
Overrides BaseService.createEpics
Defined in Services/DataService/DataService.ts:380
Returns: IActionEpic[]
▸ createNew(initialData?: Partial
<T
>): IModel<T
>
Defined in Services/DataService/DataService.ts:150
Create a new instance of the Model which has not been committed to the API yet.
Parameters:
Name | Type | Default value |
---|---|---|
Default value initialData |
Partial <T > |
{} |
Returns: IModel<T
>
▸ createReducers(): object
Overrides BaseService.createReducers
Defined in Services/DataService/DataService.ts:359
Returns: object
▸ createSelectors(): ISelectors
Overrides BaseService.createSelectors
Defined in Services/DataService/DataService.ts:311
Returns: ISelectors
▸ createTypes(): IActionTypes
Overrides BaseService.createTypes
Defined in Services/DataService/DataService.ts:258
Returns: IActionTypes
▸ deleteRecordEpic(action$: IObservableAction<IModelId>): Observable
<IAction<any
, any
>>
Defined in Services/DataService/DataService.ts:457
Parameters:
Name | Type |
---|---|
action$ | IObservableAction<IModelId> |
Returns: Observable
<IAction<any
, any
>>
▸ fetchAllEpic(action$: IObservableAction<IQueryBuilder, IPostActionHandlers & IForceReload>, store: Store
<IDataServiceStateRecord<T
>>): Observable
<IAction<any
, any
>>
Defined in Services/DataService/DataService.ts:397
Parameters:
Name | Type |
---|---|
action$ | IObservableAction<IQueryBuilder, IPostActionHandlers & IForceReload> |
store | Store <IDataServiceStateRecord<T >> |
Returns: Observable
<IAction<any
, any
>>
▸ getAll(): Observable
<IModel<T
>[]>
Defined in Services/DataService/DataService.ts:231
Returns: Observable
<IModel<T
>[]>
▸ getById(id: string
): Observable
<IModel<T
>>
Defined in Services/DataService/DataService.ts:161
Parameters:
Name | Type |
---|---|
id | string |
Returns: Observable
<IModel<T
>>
▸ getByIds(ids: string
[]): Observable
<IModel<T
>[]>
Defined in Services/DataService/DataService.ts:182
Parameters:
Name | Type |
---|---|
ids | string [] |
Returns: Observable
<IModel<T
>[]>
▸ getByQuery(queryBuilder: IQueryBuilder): Observable
<IQueryManager<T
>>
Defined in Services/DataService/DataService.ts:198
Parameters:
Name | Type |
---|---|
queryBuilder | IQueryBuilder |
Returns: Observable
<IQueryManager<T
>>
▸ getDefaultQueryParams(): Observable
<any
>
Defined in Services/DataService/DataService.ts:250
Get the default query params object to use when querying for the Model associated to this DataService.
Returns: Observable
<any
>
any
▸ getDefaultState(): IDataServiceStateRecord<T
>
Overrides BaseService.getDefaultState
Defined in Services/DataService/DataService.ts:133
Returns: IDataServiceStateRecord<T
>
▸ getShadowObject(): IModel<T
>
Defined in Services/DataService/DataService.ts:137
Returns: IModel<T
>
▸ makeActionCreator<T
,M
>(type: string
, defaultMeta?: any
): IActionCreator
Inherited from BaseService.makeActionCreator
Defined in Services/BaseService.ts:95
Creates an IActionCreator function for triggering an IAction with the given type.
Type parameters:
Parameters:
Name | Type | Description |
---|---|---|
type | string |
- |
Optional defaultMeta |
any |
- |
Returns: IActionCreator
▸ makeActionType(type: string
): string
Inherited from BaseService.makeActionType
Defined in Services/BaseService.ts:64
Returns a namespaced IAction type in the form <name>/<type>
. For example: student/FETCH_ALL
Parameters:
Name | Type | Description |
---|---|---|
type | string |
- |
Returns: string
▸ patchRecordEpic(action$: IObservableAction<IModelId>, store: Store
<IDataServiceStateRecord<T
>>): Observable
<IAction<any
, any
>>
Defined in Services/DataService/DataService.ts:440
Parameters:
Name | Type |
---|---|
action$ | IObservableAction<IModelId> |
store | Store <IDataServiceStateRecord<T >> |
Returns: Observable
<IAction<any
, any
>>
▸ updateRecordEpic(action$: IObservableAction<IModelId>, store: Store
<IDataServiceStateRecord<T
>>): Observable
<IAction<any
, any
>>
Defined in Services/DataService/DataService.ts:423
Parameters:
Name | Type |
---|---|
action$ | IObservableAction<IModelId> |
store | Store <IDataServiceStateRecord<T >> |
Returns: Observable
<IAction<any
, any
>>
▸ getStateObservable(): Observable
<any
>
Inherited from BaseService.getStateObservable
Defined in Services/BaseService.ts:82
Returns: Observable
<any
>
▸ registerDispatch(dispatch: any
): void
Inherited from BaseService.registerDispatch
Defined in Services/BaseService.ts:74
Registers the dispatch function that is passed in from the middleware.
Parameters:
Name | Type | Description |
---|---|---|
dispatch | any |
- |
Returns: void
void
▸ setStateObservable(state$: Observable
<any
>): void
Inherited from BaseService.setStateObservable
Defined in Services/BaseService.ts:78
Parameters:
Name | Type |
---|---|
state$ | Observable <any > |
Returns: void