Skip to content

Relation Paging

API operations described above provide a way to retrieve a limited (initial) set of related data. In most real world scenarios, there may be more related objects than returned by Single Step, Two Step or Relation Depth Retrieval APIs. To obtain a complete set of related objects Backendless supports Relation Paging API described below.

Important

  1. To understand the concept of paged data retrieval, see the Data retrieval with Paging section of the documentation.
    2. When working with paging, it may be important to know the total size of the related collection. See the Get Object Count section for details on how to get the related objects count.

Methods

GET

Endpoint URL

The xxxx.backendless.app is a subdomain assigned to your application. For more information see the Client-side Setup section of this documentation.

https://xxxx.backendless.app/api/data/<table-name>/<parentObjectId>/<relationName>?pageSize=<pageSize>&offset=<offset> 

where:

Argument                Description
<table-name> Name of the table which contains the parent object identified by <parentObjectId>.
<parentObjectId> Id of the object for which the related objects will be retrieved.
<relationName> Name of the column which identifies the relation in the parent table (shown in the URL as <table-name>). This is the relation for which the related data will be retrieved.
<pageSize> Sets the page size which is the number of objects to be returned in the response.
<offset> Zero-based index of the object in the persistent store from which to start object retrieval. Suppose the first request returned 10 related objects and there are 100 objects total. The subsequent request can set offsetto 20, so the next batch of objects is loaded sequentially.

Request Headers

user-token: value-of-the-user-token-header-from-login

where:

Argument                Description
user-token Optional header. Contains a value returned by Backendless in a preceding user Login API call. If user-tokenis set in the request, the currently logged in user will be assigned to the ownerId property of the user object which is being saved. Additionally, the operation will be executed with the security policy associated currently logged in user. This means all permissions associated with the user and the roles assigned to the user will be enforced by Backendless.

Request Body

None

Return Value

Array of related objects or error.

Example

The example below includes two API requests to load separate "pages" or related data. The first page includes 20 data objects from offset  0 and the second page loads another 20 objects from offset 20. The data is loaded for the orderItem relation declared in the Order table.

Load page 1:

curl "https://xxxx.backendless.app/api/data/Order/<parentObjectId>/orderItem?pageSize=20&offset=0" 

Load page 2:

curl "https://xxxx.backendless.app/api/data/Order/<parentObjectId>/orderItem?pageSize=20&offset=20"

Codeless Reference

data_relation_paging

where:

Argument                Description
table name Name of the data table from where the objects are retrieved.
parent object id Unique identifier (objectId) of the record.
relations Name of the related property to load. For example, if table employees has a relation column homeAddress pointing to an object in the Address table, the value of the parameter 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 backend to load the related Country object.
page size Sets the page size which is the number of objects to be returned in the response.
page offset Zero-based index of the object in the persistent store from which to run the search. This parameter should be used when implementing paged access to data. Suppose the first request returned 20 objects (if pageSize is set to 20) and there are 100 objects total. The subsequent request can set offset to 20, so the next batch of objects is loaded sequentially.
distinct When set to true, returns only unique values from a column.
file reference prefix This property allows replacing the default URL file prefix. For instance, when the operation returns a path to a file stored on the server ("https://yourdomain.backendless.app/my-file.jpg"), then you can reconstruct it by passing the new file name that must start with a slash - "/wonderful_forest.jpg". It is useful when you want the client application to open a specific file locally.

Returns the a list containing related children objects.

Consider the following data table called teacher. This data table has the related column called students, that contains the related children objects.

data_relation_paging_1

Now, consider the school data table which is referenced in the students column presented above. The school data table stores the names of the students that are linked to the parent object('Sophia Perez') in the teacher data table.

data_relation_paging_2

The example below retrieves the first five related children objects from the students data table. As you can see, the parent object is stored in the teacher data table.

data_relation_paging_3

After the Codeless logic runs, the operation returns the first five related objects from the students data table.

data_relation_paging_4

You can also skip a number of records from the beginning of the data table and retrieve only those records that match your criteria. The example below skips the first five records, and returns the last five objects since the data table students has only 10 related objects.

data_relation_paging_5

After the Codeless logic runs, the operation skips the first five records and returns the last five related objects from the students data table.

data_relation_paging_6