如何使用 Android 中的解析使用内部查询获取数据?
How to fetch data using inner queries using parse in Android?
我在 Parse 中有 3 个 类。
1)Post (post_id,post_text,user_pointer)
2)投票 (vote_type,post_pointer,user_pointer)
3)评论(comment_id,post_pointer,user_pointer)
我需要获取 post 个文本的列表、特定 post 的总票数和评论
并检查当前用户是否投票。如果投票,return vote_type(投赞成票,投反对票)。
我试过了。
ParseQuery<ParseObject> query = ParseQuery.getQuery("Post");
query.orderByDescending("createdAt");
query.findInBackground(new FindCallback<ParseObject>()
{
@Override
public void done(List<ParseObject> list, ParseException e)
{
// TODO Auto-generated method stub
if(e==null)
{
if(list!=null)
{
for(int i=0;i<list.size();i++)
{
final PostObject obj = new PostObject();
String posttext = list.get(i).getString("post_text");
obj.setPost(posttext);
obj.setObjectID(objID);
ParseQuery<ParseObject> query = ParseQuery.getQuery("Votes");
ParseObject pointerObj = ParseObject.createWithoutData("Post",obj.getObjectID());
query.whereEqualTo("post_pointer", pointerObj);
query.findInBackground(new FindCallback<ParseObject>()
{
@Override
public void done(List<ParseObject> arg0, ParseException e) {
// TODO Auto-generated method stub
if(e==null)
{
if(arg0.size()>0)
{
// get votes count
}
}
else
{
}
}
});
}
但是 for 循环不等待内部查询执行。有人可以建议一种在我的案例中编写查询的好方法。
尝试用 obj.getObjectId()
替换 obj.getObjectID()
我使用 for each 循环而不是 for 循环。那解决了我的问题。
我在 Parse 中有 3 个 类。
1)Post (post_id,post_text,user_pointer)
2)投票 (vote_type,post_pointer,user_pointer)
3)评论(comment_id,post_pointer,user_pointer)
我需要获取 post 个文本的列表、特定 post 的总票数和评论 并检查当前用户是否投票。如果投票,return vote_type(投赞成票,投反对票)。
我试过了。
ParseQuery<ParseObject> query = ParseQuery.getQuery("Post");
query.orderByDescending("createdAt");
query.findInBackground(new FindCallback<ParseObject>()
{
@Override
public void done(List<ParseObject> list, ParseException e)
{
// TODO Auto-generated method stub
if(e==null)
{
if(list!=null)
{
for(int i=0;i<list.size();i++)
{
final PostObject obj = new PostObject();
String posttext = list.get(i).getString("post_text");
obj.setPost(posttext);
obj.setObjectID(objID);
ParseQuery<ParseObject> query = ParseQuery.getQuery("Votes");
ParseObject pointerObj = ParseObject.createWithoutData("Post",obj.getObjectID());
query.whereEqualTo("post_pointer", pointerObj);
query.findInBackground(new FindCallback<ParseObject>()
{
@Override
public void done(List<ParseObject> arg0, ParseException e) {
// TODO Auto-generated method stub
if(e==null)
{
if(arg0.size()>0)
{
// get votes count
}
}
else
{
}
}
});
}
但是 for 循环不等待内部查询执行。有人可以建议一种在我的案例中编写查询的好方法。
尝试用 obj.getObjectId()
替换 obj.getObjectID()我使用 for each 循环而不是 for 循环。那解决了我的问题。