Parse.com关系查询 - 缩小结果问题

时间:2014-11-24 07:10:17

标签: parse-platform relational android-parsequeryadapter

我有一个ParseQueryAdapter,如果我允许的话,它会正确显示所有帖子,但我正试图找到一种只显示朋友帖子的方法。代码的相对位如下:

public CustomAdapter(Context context) {
    // Use the QueryFactory to construct a PQA that will only show
    // Todos marked as high-pri
    super(context, new ParseQueryAdapter.QueryFactory<ParseObject>() {
        public ParseQuery create() {

            ParseUser user = ParseUser.getCurrentUser();

            ParseRelation<ParseUser> relation = user.getRelation("friends");
            ParseQuery relationQuery = relation.getQuery();
            relationQuery.whereExists("objectID");

            ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Post");
            query.whereEqualTo("CreatedBy", relationQuery.whereExists("ObjectID"));
            return query;
        }
    });
}

数据结构如下。用户有朋友关系。所以我想从他们那里获得这种关系,并寻找与帖子的CreatedBy用户匹配的objectID。我看到的一个问题是CreatedBy字段是指向用户的指针,其中Friend关系中的objectID是一个字符串。我在这里尝试了很多不同的东西,但是我无法让它发挥作用。

所以我不确定我是否应该将CreatedBy转换为字符串,但我不知道如何在整个查询中使用它。或许我应该将朋友关系中的每个朋友视为用户,而不是查看objectID字段。

1 个答案:

答案 0 :(得分:0)

你想要的是whereMatchesQuery()方法,例如:

public CustomAdapter(Context context) {
    super(context, new ParseQueryAdapter.QueryFactory<ParseObject>() {
        public ParseQuery create() {

            ParseUser user = ParseUser.getCurrentUser();

            ParseRelation<ParseUser> relation = user.getRelation("friends");
            ParseQuery friendsQuery = relation.getQuery();

            ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Post");
            query.whereMatchesQuery("CreatedBy", friendsQuery);
            return query;
        }
    });
}

你基本上是在说“找到'CreatedBy'中的指针匹配此查询返回的行之一的行”。

该方法记录在Relational Queries下。