1

我有一个列作为数组,我在其中存储带有指向 _User 实体的指针的数据:

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

我想检索整个数组作为填充用户属性的包含(表是团队,成员是数组列):

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

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

是否有可能在一个查询中做到这一点?,它会怎么样?

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

4

2 回答 2

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)中。例如,职业球员的合同可能属于他/她与球队的关系,但如果他们一次只与一支球队签约,你可以稍微作弊并将其附加到球员身上。

于 2015-12-31T17:48:50.563 回答
1

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

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

于 2015-12-31T14:20:00.533 回答