As of April 12th, you must go to Progress SupportLink to create new support cases or to access existing cases. Please, bookmark the SupportLink URL and use the new portal to contact the support team.
How to receive object so that instead of the link in it there was other object?
1 Comment
E
Edward
said
almost 10 years ago
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:
Andrey
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?