Parse platform 解析:获取用户数组的角色

Parse platform 解析:获取用户数组的角色,parse-platform,Parse Platform,我有一个用户数组,我想得到每个用户的角色。例如,假设我的应用程序在用户名下显示用户列表及其角色名称。我找不到任何简单、廉价(没有很多请求)的方法来实现这一点。查询角色。在大多数情况下,这将是一个小查询 对于列表中的每个用户,在返回角色的用户中搜索该用户。如果您正在搜索ID,那么您就拥有了所需的一切。(编辑-删除对includeKey的引用)。不能使用匹配查询。因此,从用户列表中,使用查询获取所有用户对象,然后使用该查询获取所有角色。一旦拥有了角色,就可以将角色与用户相匹配。我在下面给出了Andr

我有一个用户数组,我想得到每个用户的角色。例如,假设我的应用程序在用户名下显示用户列表及其角色名称。我找不到任何简单、廉价(没有很多请求)的方法来实现这一点。

查询角色。在大多数情况下,这将是一个小查询


对于列表中的每个用户,在返回角色的用户中搜索该用户。如果您正在搜索ID,那么您就拥有了所需的一切。(编辑-删除对includeKey的引用)。

不能使用匹配查询。因此,从用户列表中,使用查询获取所有用户对象,然后使用该查询获取所有角色。一旦拥有了角色,就可以将角色与用户相匹配。我在下面给出了Android SDK的答案,因为您没有指定使用哪个SDK

String[] userIds;

ParseQuery<ParseUser> innerQuery = ParseUser.getQuery();
innerQuery.whereContainedIn("objectId", userIds);

ParseQuery<ParseObject> query = ParseQuery.getQuery("Role");
query.whereMatchQuery("user", innerQuery);
query.findInBackground(new FindCallback<ParseObject>() {
    public void done(List<ParseObject> roleList, ParseException e) {

    }
});
String[]用户标识;
ParseQuery innerQuery=ParseUser.getQuery();
innerQuery.whereContainedIn(“objectId”,userid);
ParseQuery=ParseQuery.getQuery(“角色”);
query.whereMatchQuery(“用户”,innerQuery);
findInBackground(新的FindCallback(){
公共作废完成(列表角色列表,e){
}
});

显然,您需要用所有用户的userid填写userIds变量。老实说,您甚至可以对用户使用任何其他查询,以返回您想要的所有用户。

includeKey不适用于关系。我必须抓取每个关系并获取每个关系的用户列表。请求的数量可能会很大。我如何获得用户ID?在iOS中,PFRole具有作为PFRelation的users属性。为了获得用户,我必须创建一个关于这个关系的查询。然后,实际上,我必须发出n+1请求(其中n是角色数)来确定每个用户的角色。我想通常不是一个大数字。是的,就是这个想法。希望您的角色数量远小于用户数量(并且是有限的)。对不起,我不确定我是否理解这个问题。你能解释一下你的解析数据库的设计吗?这样我就可以知道你在问什么了。这个问题与模式无关,因为所有的解析模式都有用户和角色。就像我说的,给定一个用户列表,我想获得每个用户的角色。啊,你使用一个内部查询。但是一个问题是如何从角色列表中知道每个用户的角色。我已经有一段时间没有使用matchQuery了,但是我认为user属性将包含user对象?Parse roles包含一个实际上是关系的users字段。要获得这些用户,我必须对关系执行查询。