我在我的Android应用数据库中使用Parse.com。
简而言之,我查询了A类,它有一个指向B类的字段。如果我查询A类并且包含B类,那么无论如何我可以使用查询过滤器和/或按B类中的字段排序?
我对sql样式db更熟悉,因为我的描述可能会很明显。在解析中,我有一张桌子,供受邀参加游戏的人使用#game; gameInvitees"使用一些元数据,例如邀请他们和他们的rsvp状态。然后是一个单独的表格与游戏" gameInstances"。 " gameInvitees"包括一个指向他们被邀请的游戏的指针和被邀请的解析用户。
我的问题是我试图查询" gameInvitees"表格,以便我可以根据游戏时间找到当前被邀请参加游戏的用户,这是在游戏实例"表
我当前的代码看起来像这样:
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.HOUR, -1);
final Date oneHourBack = cal.getTime();
// get games that the current user is invited to
ParseQuery<GamePhaseInvitees> inviteeQuery = ParseQuery.getQuery("gameInvitees");
inviteeQuery.whereEqualTo("inviteeAccount", ParseUser.getCurrentUser()); // current user is invited
inviteeQuery.include("GameInstance");
// inviteeQuery.whereGreaterThanOrEqualTo("GameInstance.GameTime", oneHourBack); // game is one hour back (but, this doesn't work)
inviteeQuery.findInBackground(new FindCallback<GamePhaseInvitees>() {
public void done(List<GamePhaseInvitees> gamesInvitedToList, ParseException e) {
if (e == null) {
} else {
}
}
});
该代码有点简化以解释问题。基本上我需要弄清楚我可以用注释掉的行来查询由指针连接的字段。那可能吗?有没有干净的解决方案呢?
答案 0 :(得分:1)
这是一个可能的解决方案:
根据表格类型创建ParseObject:ParseObject time = new ParseObject("Date");
然后从结果中获取ParseObject:time = result.getParseObject(pointer_field);
现在,您可以从time
拉出正常情况下的任何字段,例如:time.getString("some_field")
。
您可能还需要包含:query.include("pointer_field")
。
答案 1 :(得分:0)
根据Parse社区的说法:
而不是whereKey:中的点表示法,你可以使用whereKey:matchesKey:inQuery:或whereKey:matchesQuery:。