所以我使用Parse.com作为后端实现应用程序,Parse基本上有3个类。第一个用户我有用户信息,图库我有图像"比如Instagram,最后关注我有以下关系和关注者的类。
现在我有一项活动,我必须为我所关注的人显示所有图像。我无法编写正确的关系查询以获得正确的结果。
因此,这是显示所有数据库中的图片的代码,不仅适用于我之后的人。
public class FollowingImages extends ParseQueryAdapter<ParseObject> {
public FollowingImages (Context context) {
super(context, new ParseQueryAdapter.QueryFactory<ParseObject>() {
public ParseQuery create() {
ParseQuery<ParseObject> query = ParseQuery.getQuery("Gallery");
query.include("createdBy");
return query;
}
});
}
// Customize the layout by overriding getItemView
@Override
public View getItemView(final ParseObject object, View v, ViewGroup parent) {
if (v == null) {
v = View.inflate(getContext(), R.layout.list_item, null);
}
super.getItemView(object, v, parent);
// retrieving the Images from Parse.com
return v;
}
我不知道应该在构造函数中或getItemView中应用关系查询的位置。
请任何帮助将不胜感激。
答案 0 :(得分:1)
您可以使用matchesKeyInQuery约束方法。
您可以使用matchesKeyInQuery方法获取一个对象,其中一个键与另一个查询产生的一组对象中的键值相匹配。
(在parse docs之后)
所以在你的情况下(我手工编写)可能是这样的:
ParseQuery<Follow> whoDoIFollow = ParseQuery.getQuery("Follow")
.select("From")
.whereEqualTo("To", <user>);
ParseQuery<Gallery> theirImages = ParseQuery.getQuery("Gallery")
.whereMatchesKeyInQuery("createdBy", "From", whoDoIFollow);
如果我是正确的,那么从数据传输的角度来看,这应该是一种最佳方式,因为一切都发生在服务器端,而你只得到结果(图像)。
只需替换
public FollowingImages (Context context) {
super(context, new ParseQueryAdapter.QueryFactory<ParseObject>() {
public ParseQuery create() {
ParseQuery<ParseObject> whoDoIFollow = ParseQuery.getQuery("Follow")
.select("From")
.whereEqualTo("To", <user>);
ParseQuery<ParseObject> theirImages = ParseQuery.getQuery("Gallery")
.whereMatchesKeyInQuery("createdBy", "From", whoDoIFollow);
return theirImages;
}
});
}
答案 1 :(得分:1)
您需要对查询应用约束。
ParseQuery<ParseObject> query = ParseQuery.getQuery("Gallery");
query.whereEqualTo("createdBy", "theUserId");
query.findInBackground(new GetCallback<ParseObject>() {
public void done(ParseObject object, ParseException e) {
if (object == null) {
Log.d("score", "The find request failed.");
} else {
Log.d("score", "Retrieved the object.");
}
}
});
有关详细信息,请参阅官方guide。