Single Step Retrieval¶
Important
Single Step Retrieval loads only a partial set of the related objects (default size of the retrieved related collection is 10). To load additional related objects, use the Relation Paging API.
This approach allows retrieval of a partial set of the related objects along with the parent object in a single find
or findById
request. Each relationship property (column) must be uniquely identified by name using the API documented below.
Retrieving a specific object with relations¶
Future<Map> Backendless.data.of("TABLE-NAME").findById(String id, {List<String> relations, int relationsDepth, DataQueryBuilder queryBuilder});
Future<E> Backendless.data.withClass<E>().findById(String id, {List<String> relations, int relationsDepth, DataQueryBuilder queryBuilder});
Retrieving a collection of objects with relations¶
DataQueryBuilder queryBuilder = DataQueryBuilder(); queryBuilder.related = ["RELATED-PROPERTY-NAME", "RELATED-PROPERTY-NAME.RELATION-OF-RELATION-PROP-NAME"];
Then load data using the constructed queryBuilder
object with:
Future<List<Map>> Backendless.data.of("TABLE-NAME").find([DataQueryBuilder queryBuilder]);
Future<List<E>> Backendless.data.withClass<E>().find([DataQueryBuilder queryBuilder]);
where
Argument | Description |
---|---|
RELATED-PROPERTY-NAME |
name of a related property to load. For example, if table Person has a relation "homeAddress " pointing to an object in the Address table, the value would be "homeAddress ". The syntax allows to add relations of relations. For example, if the same Address table has a relation "country " pointing to the Country table, then "homeAddress.country " would instruct the related Country object to be loaded as well. |
queryBuilder |
an instance of the com.backendless.persistence.DataQueryBuilder class. The class is used to identify related properties for relation retrieval, paging, sorting and search with whereClause. |
TABLE-NAME |
Name of the table where the data should be retrieved from. |
E |
Reference to a class which identifies the table from which the data should be loaded from. |
Important
There are some limitations for the related object retrieval. Since Dart cannot reflect the type of the list in the runtime, there are two ways to declare the collection of related objects inside the custom parent class:
@reflector class ParentTable { List<dynamic> children; }
@reflector class ParentTable { List<ChildTable> _children; set children(List value) => _children = value.cast<ChildTable>(); get children => _children; }