解析一对多(数组/子)关系

时间:2014-08-18 15:56:23

标签: android parse-platform

我有父母让我们称之为myUsermyUser和子女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个帖子。为什么?查询这种一对多关系有什么帮助吗?

1 个答案:

答案 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
    }
});