我有父母让我们称之为myUser
,myUser
和子女Post
。
每个myUser都喜欢帖子。我将这种关系存储在每个myUser的数组中。
我希望获得用户喜欢的帖子:
// for a given ParseObject myUser I do:
ParseRelation relation = myUser.getRelation("likedPosts");
ParseQuery<PostParseObject> query = relation.getQuery();
query.findInBackground(new FindCallback< PostParseObject >() {
@Override
public void done(List<PostParseObject> posts, ParseException e) {
if(e==null){
System.out.println("cool");
for(PostParseObject post: posts){
//do something
}
}
}
});
不幸的是,以上返回0个帖子。但是,在我的数据浏览器中,在myUser的likedPosts
列中,对于上述测试用户,有4个链接的Post-s:
[{"__type":"Pointer","className":"Post","objectId":"Y3FRUwcSph"},
{"__type":"Pointer","className":"Post","objectId":"XILJbguidS"},
{"__type":"Pointer","className":"Post","objectId":"r2UqBl8zRD"},
{"__type":"Pointer","className":"Post","objectId":"VMIIeLJhwf"}]
这意味着应该在public void done(List<PostParseObject> posts, ParseException e) {}
中返回4个帖子。为什么?查询这种一对多关系有什么帮助吗?
答案 0 :(得分:1)
我必须通过阅读部分文档来“解决难题”。完整代码段如下。希望有人觉得它有用。
ParseQuery<MyUser> query = ParseQuery.getQuery("myUser");
query.include("likedPosts");
query.getInBackground(currentUserID, new GetCallback< MyUser >() {
@Override
public void done(MyUser mUser, ParseException e) {
ArrayList< ParseObject > posts = (ArrayList< ParseObject >) myUser.get("likedPosts");
for (ParseObject post : posts) {
//do
}
});