0

如果我允许,我有一个 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 字段。

4

1 回答 1

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下。

于 2014-11-24T08:30:23.333 回答