Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I have a Player class. Players can have x number of Trophies. I have the Player objectId and need to get a list of all of their Trophies.

In the Parse.com data browser, the Player object has a column labeled:

trophies Relation<Trophy>
(view Relations)

This seems like it should be so simple but I'm having issues with it.

I have the ParseObject 'player' in memory:

var query = new Parse.Query("Trophy");
query.equalTo("trophies", player);
query.find({
  /throws an error- find field has invalid type array.

I've also tried relational Queries:

var relation = new Parse.Relation(player, "trophies");
relation.query().find({
  //also throws an error- something about a Substring being required.

This has to be a completely common task, but I can't figure out the proper way to do this.

Anyone know how to do this in Javscript CloudCode?

Many thanks!

EDIT--

I can do relational queries on the user fine:

var user = Parse.User.current();
var relation = user.relation("trophies");
relation.query().find({

I don't understand why this very same bit of code breaks if I'm using a non-user object.

share|improve this question
add comment

1 Answer

I finally sorted this out, though there is a caveat that makes this work differently than the documentation would indicate.

//Assuming we have 'player', an object of Class 'Player'.

var r = player.relation("trophies");
r.query().find({
  success: function(trophies){
    response.success(trophies); //list of trophies pointed to by that player's "trophies" column.
  },
  error: function(error){
    response.error(error);
  }

})

The caveat: You must have a 'full' player object in memory for this to work. You can't save a player object, grab the object from the success callback and have this work. Some reason, the object that is returned in the success handler is appears to be an incomplete Parse.Object, and is missing some of the methods required to do this.

Another stumbling block about the Parse.com Javascript SDK- A query that finds nothing is still considered successful. So every time you query for something, you must check the length of the response for greater than 0, because the successful query could have returned nothing.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.