我在Parse中有两个课程:(用户和游戏)。 我的专栏名称是:
User(objectId,username,password,email,phone).
Games(objectId,name,PlayedBy{this is a pointer to the User class}).
我的问题是,我可以查询单个用户的所有游戏,因为它是一对多的关系,但我不知道如何让用户在Android的解析指南中找到玩特定游戏的用户这个:
// say we have a Game object
ParseObject game = ...
// getting the user who created the Game
ParseUser createdBy = game.getUser("createdBy");
但似乎game.getUser出错了,就像写错了。我试过了:
ParseUser createdBy = game.getParseUser("PlayedBy");
我不知道接下来该做什么。 我用来获取特定用户所有游戏的查询是:
public void queryGamesFromParse(){
ParseQuery<ParseObject> gamesQuery = new ParseQuery<>("Games");
gamesQuery.whereEqualTo("PlayedBy", ParseUser.getCurrentUser());
gamesQuery.include("PlayedBy");
gamesQuery.orderByDescending("createdAt");
gamesQuery.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> List, ParseException e) {
if(e == null){
Adapter adapter = new Adapter(MainActivity.this, List);
setListAdapter(adapter);
}else{
Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
});
}
单击PlayedBy列时从解析数据库中的直接转到User表。 我想创建一个查询,查找玩特定游戏的玩家,并在列表中显示用户名,就像我在第一个游戏中所做的一样。 如果有人可以帮助我,那将非常感谢谢谢。
答案 0 :(得分:0)
Games.playedBy类型为Array,array.entry =指向_User类
的指针- EDITED-- 使用'playerBy'上的数据浏览器验证数组中的每个条目都是指针....
{"__type":"Pointer","className":"_User","objectId":"OID.value"}
而不是
{"objectId":"someUserID"}
当您查询游戏时,您将获取'playingBy'数组,并且您将拥有可以提供给管理列表的View适配器的所有_User.name值。
queryGames.include("playedBy") // inlines each full _User in result
或者你可以拥有一个只有2个指针和日期的'play'类
plays.game =指向游戏的指针 plays.user =指向_User的指针
然后你可以使用'query.include.game'+'query.include.user'来展平查询(没有后续的fetch请求)