在解析数据库中查询我的不同值集合(Android)中存在的每个值

在解析数据库中查询我的不同值集合(Android)中存在的每个值,android,parse-platform,Android,Parse Platform,我正在尝试查询Parse数据库,查找不同值集合中存在的每个值。 我主要想做的是查询所有已经在数据库中注册了电话号码的Parse用户的列表 我面临的基本问题是,查询只返回第一个匹配值,而忽略其余值。我想做的是,我想让它遍历提供的整个集合值列表,并获得parseuser列表 但是在我的例子中,它只返回一个ParseUser 这是我的示例代码 ParseQuery<ParseUser> query = ParseUser.getQuery(); query.whereCon

我正在尝试查询Parse数据库,查找不同值集合中存在的每个值。 我主要想做的是查询所有已经在数据库中注册了电话号码的Parse用户的列表

我面临的基本问题是,查询只返回第一个匹配值,而忽略其余值。我想做的是,我想让它遍历提供的整个集合值列表,并获得parseuser列表

但是在我的例子中,它只返回一个ParseUser

这是我的示例代码

    ParseQuery<ParseUser> query = ParseUser.getQuery();
    query.whereContainedIn("phone", phoneNumberList);
    query.findInBackground(new FindCallback<ParseUser>() {
        public void done(final List<ParseUser> objects, ParseException e) {
            if (e == null) {
                // The query was successful.
                // Remove the previously cached results.
                    ParseUser.unpinAllInBackground(UN, new DeleteCallback() {
                        public void done(ParseException e) {

                            for(int i =0;i<objects.size();i++){
                                ParseUser user = objects.get(i);
                                String UN = user.getUsername(); System.out.println("UniteName:\t" + uniteName + "\n");
                                String time = user.getUpdatedAt().toString();  System.out.println("Time:\t" + time + "\n" );
                                String ss = user.getString("sa"); System.out.println("Status:\t" + status + "\n" );

                            }


                            // Cache the new results.
                            ParseUser.pinAllInBackground(UN, objects);
                        }
                    });


                swipeContainer.setRefreshing(false);
            }

            else {
                // Something went wrong.
                showNegativeAlertDialog("Something went wrong. Please Check Your Internet Connection and swipe down to refresh");
            }
        }
    });
ParseQuery query=ParseUser.getQuery();
查询。其中包含在(“电话”,电话号码列表);
findInBackground(新的FindCallback(){
公共void done(最终列表对象,parsee异常){
如果(e==null){
//查询成功。
//删除以前缓存的结果。
ParseUser.unpinalinbackground(UN,新的DeleteCallback(){
公共作废完成(Parsee异常){

对于(int i=0;i我认为xYrixmorten在评论中的回答回答了您的问题:

如果你想要一个有电话号码的所有用户的列表,你可以简单地更改

query.whereContainedIn("phone", phoneNumberList); 

然而,我想知道你为什么要在客户端(android)上这样做?默认情况下,解析查询会将你限制为100个对象,除非你指定一个更高的限制。即使如此,我相信最大值是1000,如果你真的想遍历所有用户,这开始变得很困难

我建议您看看。在云代码中,您可以像这样轻松地遍历所有用户:

  Parse.Cloud.useMasterKey();
  var query = new Parse.Query(Parse.User);
  query.each(function(user){ 
      //access all users here
  })

显然,这实际上取决于您试图对用户做什么…

如果您想要一个所有用户的列表,其中都有一个电话号码,您只需将
query.whereContainedIn(“phone”,phoneNumberList);
更改为
query.whereExists(“phone”);
@cYrixmorten这将返回一大堆parseuser。我只希望它返回我认识的parseuser(出现在我的联系人或电话号码列表中)好吧,从你的问题我看不清楚。然后我真的不知道为什么它不像你期望的那样。也许是因为它需要精确的音素匹配。首先,谢谢你花时间考虑我的问题。@莫吉利亚石油和@ CyrxMult.但是问题的查询。它将返回所有具有电话号码的ParseUsers。而我想做的只是检索具有电话号码的ParseUsers,这些电话号码已经存在于我的联系人列表中。有什么想法吗?但是我从未尝试过Parse Cloud代码。我将检查它。希望它有帮助。任何其他快速修复建议也是一个好主意anks的家伙们!!我知道了!!没有很好地填充列表!!谢谢你们的帮助..@mogile\u oli
  Parse.Cloud.useMasterKey();
  var query = new Parse.Query(Parse.User);
  query.each(function(user){ 
      //access all users here
  })