使用Javascript在Parse.com中获取多个相关对象的简单方法?

时间:2013-07-17 20:00:24

标签: javascript parse-platform

我有一个Player类。玩家可以拥有x个奖杯。我有Player objectId,需要获得所有奖杯的列表。

在Parse.com数据浏览器中,Player对象有一个标记为:

的列
trophies Relation<Trophy>
(view Relations)

这看起来应该很简单,但我遇到了问题。

我在内存中有ParseObject'播放器':

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

我也尝试了关系查询:

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

这必须是一项完全常见的任务,但我无法找到正确的方法。

任何人都知道如何在Javscript CloudCode中执行此操作?

非常感谢!

修改 -

我可以对用户进行关系查询:

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

如果我使用的是非用户对象,我不明白为什么同样的代码会中断。

2 个答案:

答案 0 :(得分:5)

我终于对此进行了整理,但有一点需要注意,这使得这项工作与文档所表明的不同。

//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);
  }

})

警告:您必须在内存中拥有一个“完整”播放器对象才能生效。您无法保存玩家对象,从成功回调中获取对象并完成此工作。有些原因,在成功处理程序中返回的对象看起来是一个不完整的Parse.Object,并且缺少执行此操作所需的一些方法。

关于Parse.com Javascript SDK的另一个绊脚石 - 找不到任何内容的查询仍然被认为是成功的。因此,每次查询某些内容时,必须检查响应的长度是否大于0,因为成功的查询可能没有返回任何内容。

答案 1 :(得分:3)

这对我有用:

        var Comment = Parse.Object.extend("Comment");
        var commentsQuery = new Parse.Query(Comment);
        commentsQuery.equalTo("parent", video);//for the given 'video' instance, find its children (comments)
        commentsQuery.descending("createdAt");
        return commentsQuery.find();

注意:当然,video是Video类的一个实例。返回find()意味着我必须处理“承诺”#39}。在任何函数中调用此函数。

这是另一个来自另一个角度的功能:

    getRecentCommentsOfAllVideos: function(limit) {
        var Comment = Parse.Object.extend("Comment");
        var commentsQuery = new Parse.Query(Comment);
        commentsQuery.descending("createdAt");
        commentsQuery.limit(limit);
        commentsQuery.include("parent");//this enables the details of the comment's associated video to be available in the result
        return commentsQuery.find();
    }

(请务必阅读https://parse.com/docs/js_guide并搜索“#34;包含每条评论的帖子数据&#34;”的行。)

我也看过这些材料;也许他们会帮助你(尽管他们对我没什么帮助):