Android:从多个关系中获取对象

时间:2013-11-19 14:28:03

标签: android parse-platform

说,我有一个美食课,我有三个关系 - '恋人'食客'制造商'。 我在这些关系中添加了用户。

现在我想展示一种特定的食物,一个列表显示所有的情人'首先,然后是' Makers'以及所有' Eaters'最后 - 按此顺序。

因此,要仅检索Lovers,我必须在Lovers上执行ParseQuery,然后find(),我将用户列表存储在ArrayList中。然后我再次为Makers和Eaters重复相同的过程,并将结果附加到我的ArrayList。

此过程缓慢,乏味且耗费资源。有更好的方法吗?

修改

食品类(ParseObject)如下

  • 恋人 - 关系< _User>
  • 食者 - 关系< _User>
  • 制造商 - 关系< _User>
  • ---和其他变量,如美食,国家等---

用户类(ParseUser)如下##

  • 名称
  • 年龄

每一种食物都会成为一个“恋人”。与喜爱食物的用户的关系,对于食用者来说是相同的。和'制造商'

为了获得情人,然后是制造者,然后是食客,以获得食物'对象,我使用以下查询

ArrayList<User> userList = new ArrayList<User>();

ParseRelation<ParseObject> relation = food.getRelation("Lovers");
ArrayList<User> lovers =relation.getQuery().find();

ParseRelation<ParseObject> relation = food.getRelation("Makers");
ArrayList<User> makers =relation.getQuery().find();

ParseRelation<ParseObject> relation = food.getRelation("Eaters");
ArrayList<User> eaters =relation.getQuery().find();

userList.add(lovers);
userList.add(makers);
userList.add(eaters);

不幸的是,Parse不支持&#39; include&#39;在查询关系时,我不想使用Array存储关系(因为将来我可能需要找到用户喜欢,吃和做的东西)。那么,是否有解决方案在单个查询中获取这3个关系数据。

4 个答案:

答案 0 :(得分:1)

是的,您可以使用1个类查询所有3个类。我将创建一个关系类,它指向您要查询的3个类中的每一个,然后直接查询此关系类以包含指向3个类的指针。然后你可以创建3个类的对象并使用它们。

答案 1 :(得分:1)

一种选择是创建一个类作为您的连接表,就像在Parse上提供的一些示例中所做的那样。

UserFood:
User: link to User class
Food: link to Food class
MakesIt: bool
LovesIt: bool
EatsIt: bool

让所有用户获得食物变成一个简单的查询,为用户获取所有食物变得简单。如果你只想要一个'恋人'列表,你可以过滤'LovesIt'= true。

它还可以轻松地进行如下查询:找到我所有的食物,而制作它的人也会吃它。

答案 2 :(得分:0)

是和否。如果要从单独的类中检索,则需要执行3次单独的回调。但是,根据您的结构化以及您真正想要实现的目标,您可以查看Relational queries

答案 3 :(得分:-1)

您可以添加自定义类而不是_User

作为关系

在您的自定义类中,您可以将用户存储为一个字段,并将其状态(爱人,食者,制作者)存储在另一个字段中  这样您就可以一次查询所有用户

相关问题