我有一个Column as Array,我在其中存储带有指向_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,而且我只想要一个查询。
如果你所尝试的不起作用,那么我认为这是不可能的。
另一种选择是在云代码中执行,在那里您可以快速获取所有嵌套内容并将其格式化为单个响应。
EDIT既然我理解了这个问题。。。数组中的对象不是指针。包含指针与是指针不同。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)中。例如,职业球员的合同可能属于他/她与球队的关系,但如果他们一次只与一支球队签订合同,你可以欺骗一点,并将其附加到球员身上。