Parse.com在自定义对象Array中检索Pointer对象

时间:2015-12-31 14:15:54

标签: parse-platform parse-javascript-sdk

我有一个列作为数组,我使用指向_User实体的指针存储数据:

[{
  "score": 500,
  "user":{
    "__type":"Pointer",
    "className":"_User",
    "objectId":"b80TtUfOwH"
  }
}, {
  "score": 1000,
  "user":{
    "__type":"Pointer",
    "className":"_User",
    "objectId":"b80TtRdaw"
  }
}]

我希望将整个数组检索为包含且填充了用户属性(表是Team,成员是Array列):

var query = new Parse.Query("Team");
query.include("members");
query.include("members.user");

我已经尝试了这些包含,并且正在检测用户但未填写。

是否可以在一个查询中执行此操作?,它将如何?

我想使用数组列(没有数组指针)因为它不会超过10而我只想要一个查询。

2 个答案:

答案 0 :(得分:1)

如果您尝试的内容不起作用,那么我认为这是不可能的。

另一种方法是在云代码中执行此操作,您可以快速获取所有嵌套内容并将其格式化为单个响应。

答案 1 :(得分:1)

编辑现在我明白了这个问题......数组中的对象不是指针。包含指针与指针不同。没有聪明的include表达式可以提取用户。

怎么做?团队成员都是人。这是一个相当普遍的事实,所以我建议将members属性更改为实际指针数组。有了这个,我第一次编辑的建议就可以了,不过,我想你已经知道了......

var query = new Parse.Query("Team");
query.include("members");
query.find().then(function(teams) {
    // teams will contain fully fetched users in the members property
});

但是数组对象中的其他数据应该去哪里?这取决于该数据的含义。数据是否真的属于团队和成员之间的关系? (一个很好的例子,可能是一个职业球员与球队的合同)。 “得分”听起来不像是这样的事情。我会在其他地方找到它(就像记录游戏的对象一样)。

通常,当ClassA与ClassB(Team - > User for you)相关时,属性有三个位置:每个类以及它们之间的关系。如果属性确实必须属于该关系,那么您将需要一个ClassC,它将携带该属性。

还有一件事:即使属于真正属于关系的属性,您也经常可以将其欺骗到目标类(ClassB)中。例如,职业球员的合同可能属于他/她与球队的关系,但如果他们一次只与一支球队签约,你可以作弊并将其附加到球员身上。