码迷,mamicode.com
首页 > 移动开发 > 详细

【原】使用Bmob作为iOS后台开发心得——查询关联关系(BmobRelation)

时间:2015-09-14 22:38:47      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:

简介

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)

标签:

原文地址:http://www.cnblogs.com/polobymulberry/p/4808209.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!