Hello Mark,
Consider the code below. My Users table has a 1:1 relationship column “profileImageUrl” pointing to the ProfileImageUrl Table.
@BackendlessEvent( "MyEvent" )
public class MyEventHandler extends com.backendless.servercode.extension.CustomEventHandler
{
@Async
@Override
public Map handleEvent( RunnerContext context, Map eventArgs )
{
// add your code here
String parentObjectId = com.backendless.servercode.InvocationContext.getUserId();
LoadRelationsQueryBuilder<Map<String, Object>> queryBuilderProfileImage;
queryBuilderProfileImage = LoadRelationsQueryBuilder.ofMap();
queryBuilderProfileImage.setRelationName("profileImageUrl");
Backendless.Data.of("Users").loadRelations(parentObjectId, queryBuilderProfileImage,
new AsyncCallback<List<Map<String, Object>>>() {
@Override
public void handleResponse(List<Map<String, Object>> profileImageUrlMaps) {
Map profileImageUrlMap = profileImageUrlMaps.get(0);
}
@Override
public void handleFault(BackendlessFault backendlessFault) {
}
});
}
profileImageUrlMaps in handleResponse is therefore just a 1 element arraylist, hence the use of
Map profileImageUrlMap = profileImageUrlMaps.get(0)
to get the single map i require from the table.
Am supposed to put that map in my return map like so
HashMap<String, Object> result = new HashMap<String, Object>();
result.putAll(profileImageUrlMap);
return result;
Somehow i can’t get profileImageUrlMap out of
Map profileImageUrlMap = profileImageUrlMaps.get(0);
inside handleResponse,
i have tried declaring a variable
Map profileImageUrlMap:
then assigning
profileImageUrlMap = profileImageUrlMaps.get(0)
but it’s not working.
either it’s asking me to remove a redundant assignement or transform profileImageUrlMap into a one element array.
What is the best way to go about this.
sync is giving me the object straight away like so
@Async
@Override
public Map handleEvent( RunnerContext context, Map eventArgs )
{
// add your code here
String parentObjectId = com.backendless.servercode.InvocationContext.getUserId();
LoadRelationsQueryBuilder<ProfileImageUrl> loadRelationsQueryBuilderProfileImage;
loadRelationsQueryBuilderProfileImage = LoadRelationsQueryBuilder.of(ProfileImageUrl.class);
loadRelationsQueryBuilderProfileImage.setRelationName("profileImageUrl");
List<ProfileImageUrl> profileImageUrls = Backendless.Data.of(BackendlessUser.class).loadRelations(parentObjectId,
loadRelationsQueryBuilderProfileImage);
ProfileImageUrl profileImageUrlObj = profileImageUrls.get(0);
Which i can then asign a key in my result Map easily like so:
HashMap<String, Object> result = new HashMap<String, Object>();
result.put("profileImageUrl", profileImageUrlObj);
return result;
return result;