为我的不同值集合中存在的每个值查询 Parse 数据库 - Android

Posted

技术标签:

【中文标题】为我的不同值集合中存在的每个值查询 Parse 数据库 - Android【英文标题】:Query the Parse database for every single value present inside my Collection of different values - Android 【发布时间】:2015-10-22 17:39:19 【问题描述】:

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

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

但在我的情况下,它只返回一个 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");
            
        
    );

这里的 phoneNumberList 是一个字符串集合。该集合还包含数据库中的其他匹配值。我真的被卡住了。任何人,请帮助。提前致谢。

【问题讨论】:

如果您想要一份所有有电话号码的用户的列表,您只需将query.whereContainedIn("phone", phoneNumberList); 更改为query.whereExists("phone"); @cYrixmorten 这将返回一大堆 ParseUser。我只希望它返回我认识的一堆 ParseUsers(出现在我的联系人或 phoneNumberList 中) 好吧,我从你的问题中不清楚。然后,老实说,我不知道为什么它的行为不像您期望的那样。也许是因为它需要电话号码的完全匹配。 【参考方案1】:

我认为 xYrixmorten 在评论中的回答回答了你的问题:

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

query.whereContainedIn("phone", phoneNumberList); 

query.whereExists("phone"); 

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

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

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

显然,这实际上取决于您要对用户做什么...

【讨论】:

首先,感谢您花时间考虑我的问题。@mogile_oil 和@cYrixmorten。但是 query.whereExists("phone") 的问题在于它会返回所有带有电话号码的 ParseUsers。而我想要做的只是用我的联系人列表中已经存在的电话号码检索 ParseUsers。有什么想法吗? 但是我从未尝试过 Parse Cloud Code。会检查出来。希望能帮助到你。任何其他快速修复建议也是受欢迎的 谢谢大家!!我刚刚想通了!!没有很好地填充列表!感谢您的帮助.. @mogile_oli

以上是关于为我的不同值集合中存在的每个值查询 Parse 数据库 - Android的主要内容,如果未能解决你的问题,请参考以下文章

Cloud Firestore:如何在我的集合查询中获取文档引用并将其映射为 JSON 值?

SQL Server - 返回的行值是不是都存在于一个集合中

Swift - 根据数组值从 Parse 表中加载

查询以显示不同的组合,然后显示每个不同组合的计数

MongoDB:如何为集合中的每个文档设置一个等于另一个字段值的新字段[重复]

集合运算(UNIONUNION ALLINTERSECTMINUS)