ios解析一对多个关系的查询

时间:2014-02-01 02:24:11

标签: mysql sql parse-platform

我有以下表结构:

用户

id
email
etc

会话

id

消息

Id
Convo Id
User Id (the creator)
data

参与者

Convo_id 
User_id (the user who is part of the conversation)

我的问题是使用Parse.com如何制定查询,以便我可以执行以下操作:

作为用户a,我希望得到所有的对话。因此,首先浏览参与者表并获取每个Convo_id,其中User_id = UserA.id

然后我有一个UserA所拥有的Convo_id数组。 我的问题是如何使用原始查询中的每个Convo_id返回并让其他参与者?

1 个答案:

答案 0 :(得分:1)

从问题的外观来看,Participants类实际上应该只是UserConversation的数组。

如果您的模型是按照我的描述构建的,那么您只需按如下方式查询Conversation

query.equalTo('Participants', userA);

在数组属性上使用equalTo()表示“数组包含此值”。当值为ParseObject时,它将比较objectId并查看它是否在数组中。

另外,请确保不要手动存储ID,在存储Parse对象的代码中,它会将ID存储为参考,这意味着您可以更好地使用系统。

如果您确实需要将Participants类用作多对多连接,则可以使用:

query.equalTo("user", userA);
// include the full conversation class from its link
query.include("convo");

结果将为Participants,其convo属性为完整Conversation实例。理论上,如果您的数据允许,您可能会多次使用相同的对话,如果需要,您可以根据需要过滤掉重复的对象。