ios - leancloud如何做复杂的复合查询?
怪我咯
怪我咯 2017-04-17 16:52:03
[iOS讨论组]

我有两个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)
PHP中文网

已经解决了。
不应该把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) {
    // 
}];

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号