我有一个列作为数组,我使用指向_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而我只想要一个查询。
答案 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)中。例如,职业球员的合同可能属于他/她与球队的关系,但如果他们一次只与一支球队签约,你可以作弊并将其附加到球员身上。