sync-entities
This action can be used to sync your local database with your live database on the server. There are multiple ways to set up a sync-entities action within a :
- Under action button
- In action list
- In onPress/onChange events (if the component has these options)
- In onRefresh/onFocus
- Dynamically sync multiple entities
sync-entities can't be used if you using Static Data.
sync-entities in action
In this example, when tapping the Sync entities button the action.sync-entities is used to show a list of employees.
Example: The full example of sync-entities in action you can find in GitHub.
sync-entities in the action list
Example:
The full example of sync-entities in an action list you can find in GitHub.
sync-entities in onPress/onChange event
Here is the example of sync-entity in onPress/onChange event in list-item
Example:
sync-entities in onRefresh/onFocus
Example:
See the full example of sync-entities on onRefresh action in GitHub.
If you want to use onLoad or onFocus just change the onRefresh to onLoad or onFocus.
Dynamically sync multiple entities
When building a solution, the number of entities to sync and the parameters for each are not always known; for example, when syncing the attachments, files, or documents for a message, there can be zero, one, or more. It is necessary to dynamically specify a list of the entities, functions, and function parameters to return from the database using an expression.
Considerations
- Dynamic sync-entities apply to the REST, OneDrive, and Salesforce data providers.
- Any of the following can be synced dynamically: entity, functions, and function parameters.
Expression structure
- The basic expression structure is =$.map(array, function).
- Specify the array you will consult, i.e., a datasource @ctx.datasources.{datasourceName}.
- For the function, specify ($item).
- Example of the basic structure =$map(@ctx.datasources.{datasourceName}, function($item)).
- After defining the basic structure, map out relevant properties from the array to the relevant entity/function/parameters and specify the dynamic entry using the $.item property, e.g., "calenderId": $.item.id. This will run through all the records in the datasource and perform a sync-entities action for each record in the table.
Example sync-entities dynamically for calendars (full input source)
To return all records from the input source use $item.id. In this example, a has two lists; the first list shows all the user's calendars, and the second list uses the ids from the first list to return all the events for all the calendars. A summary component shows a count of the number of events.
Example sync-entities dynamically for a selected calendar
To return all records for a selected calendar use =$map(@ctx.action.parameters.selected, function($item) in the global action. In this example, a has a dropdown to select the calendar and a Show events button syncs the entries in the selected calendar. A summary component shows a count of the number of events in the selected calendar.