Start a new topic

It is impossible to receive object according to the link

As in documentation:



public class InvitationEntity extends GenericJson {

@Key

public String objectId;

@Key

public int status;

@Key("_id")

public String id;

@Key

public String name;

}

public class EventEntity extends GenericJson {

@Key

public String name;

@Key

public String eventDate;

@Key

public String location;

@Key

public String tip;

@Key

public KinveyReference invitations;



public void initReference(InvitationEntity myInvitation){

KinveyReference reference = new KinveyReference("invitationCollection", myInvitation.get("_id").toString());

this.invitations = reference;

}

}



...



InvitationEntity invitationEntity = new InvitationEntity();

invitationEntity.name = "3";

invitationEntity.objectId="3";

mKinveyClient.appData("invitationCollection", InvitationEntity.class).save(invitationEntity, new KinveyClientCallback() {

@Override

public void onSuccess(InvitationEntity invitationEntity1) {

Log.e("my", "Ok1 " + invitationEntity1.toString());



EventEntity eventEntity = new EventEntity();

eventEntity.tip = "33";

eventEntity.initReference(invitationEntity1);

mKinveyClient.appData("eventCollection", EventEntity.class).save(eventEntity, new KinveyClientCallback() {

@Override

public void onSuccess(EventEntity eventEntity_rez) {

Log.e("my", "Ok2 " + eventEntity_rez.toString());

}



@Override

public void onFailure(Throwable t) {

Log.e("my", "Failed to save entity " + t.getMessage());

}

});

}



@Override

public void onFailure(Throwable t) {

Log.e("my", "Failed to save entity " + t.getMessage());

}

});



Now I do request:

Query q = mKinveyClient.query();

mKinveyClient.appData("eventCollection", EventEntity .class).get(q, new KinveyListCallback() {

@Override

public void onSuccess(EventEntity [] resalt) {

Log.d("my", resalt[0].toString());

}



@Override

public void onFailure(Throwable t) {

Log.d("my", "Error fetching data: " + t.getMessage());

}

});



I receive result:



{"invitations":{"_collection":"invitationCollection",

"_id":"52715e5b13dde23677021c80",

"_type":"KinveyRef"},

"tip":"33",

"_acl":{"creator":"526182566bbfcbf429000518"},

"_kmd":{"lmt":"2013-10-30T19:30:36.086Z",

"ect":"2013-10-30T19:30:36.086Z"},

"_id":"52715e5c13dde23677021c81",

"kid":"kid_TTpvqRShiO",

"collection":"eventCollection"}



And it would be desirable to receive:



{"invitations":{"_id":"52715e5b13dde23677021c80",

"name":"3",

"objectId":"3",

"status":0,

"_acl":{"creator":"526182566bbfcbf429000518"},

"_kmd":{"lmt":"2013-10-30T19:30:35.912Z",

"ect":"2013-10-30T19:30:35.912Z"},

"kid":"kid_TTpvqRShiO",

"collection":"invitationCollection"},

"tip":"33",

"_acl":{"creator":"526182566bbfcbf429000518"},

"_kmd":{"lmt":"2013-10-30T19:30:36.086Z",

"ect":"2013-10-30T19:30:36.086Z"},

"_id":"52715e5c13dde23677021c81",

"kid":"kid_TTpvqRShiO",

"collection":"eventCollection"}



How to receive object so that instead of the link in it there was other object?
1 Comment

It's not impossible!



On Appdata, there are multiple variations of the `Get` and `GetEntity` methods. Check out the javadocs here: http://devcenter.kinvey.com/android/reference/api/reference/com/kinvey/android/AsyncAppData.html



To resolve KinveyReferences, pass a String[] containing the names of the fields you wish to resolve as the second parameter to the get method, in your case you want to use:



mKinveyClient.appData("eventCollection", EventEntity .class).get(q, new String[]{"invitations"}, new KinveyListCallback() { ... }



Now, the onSuccess callback will return an EventEntity[] (as it did before), but the references are resolved and you can call:



InvitationEntity myInvite = results[0].getInvitations.getTypedObject(InvitationEntity.class);

Login or Signup to post a comment