为我的不同值集合中存在的每个值查询 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 - 返回的行值是不是都存在于一个集合中