How does one “exclude” relational data. If I have objects with user relationships on them how do I say I only want to get down a subset of the data available on the user.
I am doing
dqb.setRelated(related: ["likes.nickname"])
And it isn’t working. I am getting all of the data down including e-mail etc.
Additionally is there a way to simple get a count of relationships back without actually getting any of the data?
Hi, Chris.
If you want to exclude/include some properties from the object itself (not it’s related objects), you should set the list of the properties with the method: setProperties
Yes, you can use Count API and pass where clause. For example, if you have table Posts
and Likes
, and relations one-to-many from Posts
to Likes
in column likes
, then you make count on Likes
table with following query:
Posts[likes].objectId = 'objectId of user post'
.
Result will be a number of post’s likes.
Hope it helps.
Hello Chris,
You can use LoadRelationsQueryBuilder to get only necessary properties. E.g if your Users table has relation 1:N to the Likes table:
let queryBuilder = LoadRelationsQueryBuilder(relationName: "likes")
queryBuilder.setProperties(properties: ["nickname"])
let dataStore = Backendless.shared.data.ofTable("Users")
dataStore.loadRelations(objectId: "UserObjectId", queryBuilder: queryBuilder, responseHandler: { likes in
for like in likes {
print(like)
}
}, errorHandler: { fault in
print("Error: \(fault.message ?? "")")
})
Unfortunately there is a bug for the class approach, the internal ticket BKNDLSS-20066 created and it will be fixed as soon as possible.
Regards,
Olha
1 Like
Hello Chris,
Issue with LoadRelationsQueryBilder class approach has been fix in version 5.6.5 of Swift-SDK.
Regards,
Olha