ios - leancloud如何做复杂的复合查询?
怪我咯
怪我咯 2017-04-17 16:52:03
0
1
370

我有两个class,一个是user,一个是userInfo。
其中userInfo里面有一个字段叫userId,是一个pointer,就是user。还有一个字段是version,类型是string。

现在我要查询userInfo里面version是1.0的所有用户,按照时间排序。

目前我的方案是先获取userInfo里面符合条件的userId,然后再获取所有userId的数据。但是这样就做了两次网络请求。
能不能一次获取呢?

let infoQuery = UserInfo.query()
infoQuery.whereKey("version", equals: "1.0")
infoQuery.orderByDescending("updatedAt")

上面的代码获取的是userInfo的结果,我想要user的结果,如果用user进行query,那么就还要在userInfo里面去查询一次。
有没有只做一次查询的解决方案呢?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
Ty80

已经解决了。
不应该把user作为pointer放入UserInfo里面。应该把UserInfo放入User里面,就可以了。
也就是说,User表里面有userInfo字段,类型是Pointer。UserInfo里面只有version字段。
这样就可以用下面的代码做查询了。

AVQuery *innerQuery = [AVQuery queryWithClassName:@"UserInfo"];
[innerQuery whereKeyExists:@"version"];
AVQuery *query = [AVQuery queryWithClassName:@"_User"];
[query whereKey:@"userInfo" matchesQuery:innerQuery];
[query findObjectsInBackgroundWithBlock:^(NSArray *comments, NSError *error) {
    // 
}];

如果大家有更好的解决方案,欢迎提出来。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!