Closed iahvector closed 9 years ago
Thanks for your question!
There's an example in this repository already: https://github.com/delight-im/Android-DDP/blob/017a82ad1cc40ff4c4e8ecc3ba6d59a2d68bf317/Examples/DDP/src/im/delight/android/ddp/examples/MainActivity.java#L84
As you can see, the equivalent to JavaScript's {}
is Java's Map<String, Object>
. The equivalent to []
is List<Object>
, by the way.
If you really need the call(...)
method, you can see how it's done in the source of this library:
https://github.com/delight-im/Android-DDP/blob/017a82ad1cc40ff4c4e8ecc3ba6d59a2d68bf317/Android/Source/src/im/delight/android/ddp/Meteor.java#L606
That method expects the arguments for the Meteor call as an Object[]
, so you can just wrap your single parameters in such an array. But often, you can just use the insert(...)
, update(...)
or remove(...)
methods.
Regarding your specific example, you could write it like this:
JavaScript:
{ key1: "value1", key2: "value2"}
Java:
Map<String, Object> map = new HashMap<String, Object>();
map.put("key1", "value1");
map.put("key2", "value2");
Parameter for "call" method:
new Object[] { map }
Does that help?
Yes, thank you very much for the quick and elaborate answer.
Oh, I use the GSON parsing out, thank you for your answer
@iahvector could you tell me how you solve your problem, the slash at the beginning is only needed when accessing collections in call, so how do you handle the method in server because it's started with slash and need a return data, and how do you handle the data,, can you give me some example code, please,
Hi @isdzulqor here's an example
Map<String, Object> params = new HashMap<>();
params.put("key1", "value1");
params.put("key2", 2);
List<Object> arrayParam = new ArrayList<>();
arrayParam.add("array value 1");
arrayParam.add("array value 2");
arrayParam.add("array value 3");
params.put("arrayKey", arrayParam);
meteor.call("methodName", new Object[]{params}, new ResultListener() {
@Override
public void onSuccess(String s) {
// success
}
@Override
public void onError(String error, String reason, String details) {
// fail
}
});
This is equal to calling
Meteor.call('methodName', {
key1: "value1",
key2: 2,
arrayKey: [
"array value 1",
"array value 2",
"array value 3"
]
});
@iahvector Thank you for your fast response, and now how to handle the return data when we want to implement find query,,
@iahvector Thanks for the great example!
@isdzulqor Let's discuss the return values in a separate issue again. Maybe you could also show your code example then. But as explained in the other issues, /my-collection/find
cannot be called.
Can you please provide examples on how to pass parameters to
Meteor.call()
? How exactly can I pass an object likeor multiple objects or a mix of objects and arrays?