我有一个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字段。
答案 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下。