嵌套包括Parse.com
我有一个UserToMessage
表,它有一个指向用户的指针,名为thisUser
,指向消息的指针叫做msg
message table
有一个指向用户名为creator
的指针。 当我查询UserToMessage
我[includeKey:@"message"]
我还想以某种方式[includeKey:@"creator"]
……
这会奏效。
PFQuery *query = [PFQuery queryWithClassName:@"UserToMessage"]; [query includeKey:@"msg"]; [query includeKey:@"msg.creator"]; // Add constraints on query ... [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { if(error) return; // Do action ... }];
[includeKey:@"message.creator"]
你甚至可以更深层次地做到这一点: message.creator.mother
– 但不仅仅是这个。
您不应该问自己如何在类似JOIN的查询中包含来自多个表的信息,而应该问自己是否已经设计了应用程序所需的数据库模型。
你写的关于你的模型的内容听起来很像SQL-ish。 但是,没关系,因为大多数人来到parse.com和其他NoSQL支持的服务来自SQL世界。 但是,简单地将SQL数据库设计转移到Parse通常不会提供最佳解决方案。
相反,首先关注查询并确定他们需要返回哪些数据。 如果您发现需要查询中返回的3个不同类的数据,那么这是模型的错误。 为便携式设备开发应用程序,您需要关注查询性能和计算开销。
您应该以这样的方式设计数据库模型,即尽可能少的查询可以访问大多数(如果不是全部)数据。 最好是一个。
该问题的典型解决方案围绕非规范化和最终一致性。 例如,在类似Twitter的应用程序中,如果您想要检索由您关注的人发布的post,那么通过首先查询某人的“关注”然后在推文表中查询所有发布的推文来获取此post是不可扩展的。由那些人。 它可以用于一些关注和post,但如果你跟踪了100,000人,那将是不可行的。
在NoSQL场景中,当有人发布推文时,这篇文章将存储在推文表中,你可以在我的feed对象的数组中以及跟随作者的每个人的feed对象中存储指向该推文的指针。 的推文!
从SQL数据库的角度来看,我知道这看起来很奇怪(甚至疯狂),但NoSQL系统则不然。 如果我后来删除了推文,则需要从可能的359.000个Feed对象中移除推文(如果我是Barack Obama)。 这不会立竿见影 – 因此“最终的一致性”。
我建议您坐下来使用笔和纸,并根据需要检索的数据重新考虑数据库模型。
好的,这个问题真的令人困惑。 如果我理解正确,您想查询UserToMessage
表并包含两个条件? 如果是这样,你可以这样做:
[query whereKey:@"msg" equalTo:MSG_POINTER]; [query whereKey:@"thisUser" equalTo:PF_USER_POINTER];
如果不是这种情况,请更新您的问题以反映您的具体需求。
- Uber API端点不能与真正的服务器域一起工作,但可以很好地与沙箱配合使用
- 删除与iOS中的模式匹配的文件
- 一个Objective-C对象可以作为它自己的代表吗? 这是不错的编程习惯?
- 找不到CorePlot / Swift方法
- 仅当testing时MKMapView导致EXC_BAD_ACCESS
- 如何在iOS中制作其他语言的键盘
- 我可以在主 – 详细信息应用的每个部分中使用不同的行数吗?
- self.tabBarController dismissViewControllerAnimated不起作用
- 使用另一个expression式作为sum:expression的参数从NSManagedObject获取聚合数据