我的用户类有关系"关注"对于他们关注的所有用户。这种情况很好。每个用户还有一个" FacebookID" String类型的列。我想查询所有不在"关注"关系。
例如,假设我有用户A,B和C,其中A跟随B.对于用户A,我的查询应该返回C,因为这是A不跟随的唯一用户。
以下是我目前使用的代码(在Objective-C中使用它,但可以随意用任何语言进行响应。我熟悉JS,Java,Swift和Parse中的Parse OBJ-C):
PFUser *user = [PFUser currentUser];
PFRelation *follows = user[@"Follows"];
PFQuery *query = [PFUser query];
//Make sure it's not in the followers
[query whereKey:@"FacebookID" doesNotMatchKey:@"FacebookID" follows.query];
//Make sure it's not the current user
[query whereKey:@"FacebookID" notEqualTo:user[@"FacebookID"];
[query findObjectsInBackgroundWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) {
NSLog(@"Found %lu users that the current user doesn't follow.", objects.count);
}];
这样做有效,但只要用户的跟踪计数超过1000,就不会因为该关系只返回前1000个而获胜。
我只希望在他们不关注的时间内在整个用户群中找到大约10个人,而不一定是所有用户。你会怎么做呢?
答案 0 :(得分:0)
我认为答案在于whereKey:doesNotMatchKey:inQuery:
的用户,但我不确定您的数据模型。 Follows
是否与PFUser的目标类有关系?在这种情况下,您想要的查询可以简洁地陈述为......
PFRelation *follows = user[@"Follows"];
PFQuery *innerQuery = [follows query];
PFQuery *query = [PFUser query];
query.limit = // your choice, up to 1000
[query whereKey:@"objectId" doesNotMatchKey:@"objectId" inQuery:innerQuery];
请注意,这并不是指OP引用的用户的“FacebookID”字符串列。如果正确设置了与用户的以下关系,则不需要。
答案 1 :(得分:0)
所以我和Parse工程师交谈过,看来我想要做的查询类型实际上受限于1000对象响应限制,所以我会在Parse平台上避免这种情况。他提到这是他们所关注的东西,所以希望它不会成为一个问题!