【原】使用Bmob作为iOS后台开发心得——查询关联关系(BmobRelation)
来源:互联网 发布:mac系统iso镜像下载 编辑:程序博客网 时间:2024/05/23 01:57
(转载)http://www.cnblogs.com/polobymulberry/p/4808209.html
本文转载请注明出处 —— polobymulberry-博客园
简介
Bmob中的数据关联分为Pointer和Relation两种(数据关联在我开发app过程中使用还是很频繁的,也算个难点。虽然之前没有学过数据库,但是觉得还是有必要熟悉和掌握它),对此,Bmob官方文档已经介绍得很详细了。
基本上查看文档就可以解决大部分数据关联的问题(Bmob的文档真心要赞一下)。这里我记录下当时我最难理解的一个部分——查询关联关系。
还是使用官方文档的事例来学习(这一处官网有些地方的objectId书写错了,记录下时间2015-09-14)。
Post表(所有用户发表的文章都放在Post表中content指文章内容,title指文章标题,author是Pointer类型,指向_User表)
_User表(username表示用户名,password表示用户密码)
举例
我们的任务是查询(喜欢Post表中objectId为a397e97451这篇文章的所有用户,简单说就是查找objectId为a397e97451文章中likes中关联(Relation)的所有User)。
//关联对象表 BmobQuery *bquery = [BmobQuery queryWithClassName:@"_User"]; //需要查询的列 BmobObject *post = [BmobObject objectWithoutDatatWithClassName:@"Post" objectId:@"a397e97451"]; [bquery whereObjectKey:@"likes" relatedTo:post]; [bquery findObjectsInBackgroundWithBlock:^(NSArray *array, NSError *error) { if (error) { NSLog(@"%@",error); } else { for (BmobObject *user in array) { NSLog(@"%@",[user objectForKey:@"username"]); } } }];
以上时官网给出的查询代码。但是我一开始实在无法理解这种查询方式,bquery明显和“likes”和post不是一条路上的。直到我看到了下面这句话:
跟Pointer不同的是,此处Relation查询的本质是_User表。
所以上面代码实际上做的是什么工作了?
1.因为我们要找的是所有喜欢这篇文章的User,所以我们先在_User表中查找所有User。
2.但是我们上一步所找到的User很多不喜欢这篇文章,所以得有一个筛选方法。而这个筛选方式就是whereObjectKey:relatedTo:,relatedTo指向的就是我要查询的那篇文章,而whereObjectKey指向的就是该文章对应的User关联关系。至于为什么要加whereObjectKey,是因为Post表中可能有多个关联User的关系,比如后期可能加入所以点评该文章的用户(关联User的关系)。我们可以这样理解,上一步的bquery中存放着_User表中所有User,而Post的likes中存放的是喜欢该文章User的objectId(或指针之类的统一标识)。然后遍历所有User,找到对应objectId相等的User,存取下来,作为查找结果。(以上纯属猜测!!!)
NSMutableArray *searchResult = 初始化;for(BmobUser *user in _User表中所有User){
if (user.objectId 等于post的likes中某个objectId ) {
[searchResult addUser:user]; }}return searchResult; // 存放了所要查询的User
总结
- 【原】使用Bmob作为iOS后台开发心得——查询关联关系(BmobRelation)
- 关于bmob后台云的使用心得
- Bmob后端云使用心得
- bmob 后台云服务使用
- Android基于Bmob第三方后台开发的App——好旅
- iOS 免费后台系统 Bmob平台
- Android开发—bmob云服务器
- Bmob的使用iOS版
- 使用Bmob后台的两个错误
- ios开发——基本控件与变量(数据)的关联与使用
- ios开发——基本控件与变量(数据)的关联与使用
- MapInfo开发心得——多地图关联篇【转】
- [NHibernate]一对多关系(关联查询)
- [NHibernate]一对多关系(关联查询)
- MyBatis--关联关系查询
- 微信小程序开发实践点滴——Bmob常用API的使用
- 微信小程序开发实践点滴——Bmob常用API的使用
- 原 IOS开发NSBundle对象使用详解
- 使用RTSP判断摄像机设备是否在线以及快照抓取
- C++笔试题 String类的实现
- JNI调用里面的多线程
- [Codeforces Round #428 DIV2E (CF839E)] Mother of Dragons
- 设计模式之外观模式
- 【原】使用Bmob作为iOS后台开发心得——查询关联关系(BmobRelation)
- UVA 147 Dollars(完全背包)
- 网易2018校招编程题集合7
- 物理CPU,物理CPU核心,逻辑CPU,超线程
- 使用vscode访问和修改远程计算机文件
- 数据库表关系(二)
- 心路历程
- 树上的博弈 51Nod
- X-NUCA 2017 Web练习 By Assassin