12

我有一个 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({

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

4

2 回答 2

7

我终于解决了这个问题,尽管有一个警告使这项工作与文档所指示的不同。

//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,因为成功的查询可能什么也没有返回。

于 2013-07-18T12:01:13.943 回答
4

这对我有用:

        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()意味着我必须在任何调用这个函数的函数中处理“承诺”。

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

    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并搜索“在每个评论中包含帖子数据”的行。)

我也看了这些材料;也许他们会帮助你(虽然他们对我帮助不大):

于 2014-03-13T04:22:58.057 回答