【问题标题】:Fetch data from Back4App(Parse)从 Back4App(Parse) 获取数据
【发布时间】:2017-03-21 10:24:08
【问题描述】:

我正在使用 Back4App(Parse) 构建一个应用程序。

我有两个表 Post 和 media。 我必须获取与 post_id 对应的媒体(单个或多个)。

所以,我使用以下方法: 首先,我从 Post 表中获取所有帖子并保存在 ArrayList 中。 然后使用 for 循环,我从 ArrayList 中获取特定的 post_id 并将其发送到媒体查询以查找该 post_id 的媒体。

但是,我的问题是查询是异步的,因此 for 循环在查询之前运行,查询结果稍后获取。 for 循环在查询之前运行,直到 ArrayList 大小。我该如何解决这个问题。

我正在使用以下方法:

 for (int i = 0; i < listUserPosts.size(); i++) {
 String postId = listUserPosts.get(i).getPostId();
 ParseQuery<ParseObject> query = ParseQuery.getQuery("Media");
 query.whereEqualTo("post_id", postId);
 query.findInBackground(new FindCallback<ParseObject>() {
                            @Override
                            public void done(List<ParseObject> objects,   ParseException e) {
                       if (objects.size() > 0) {
                       for (int j = 0; j < objects.size(); j++) 
                       {
                       ParseObject parseObject = objects.get(j);
                       //fetching data from parseObject
                       }
                       } 
                       }
                       });

任何帮助将不胜感激。

【问题讨论】:

    标签: android parse-platform back4app


    【解决方案1】:

    我不明白你到底需要做什么,但我想你的挑战是知道你什么时候完成了所有媒体的获取。所以你需要这样的东西:

        for (int i = 0; i < listUserPosts.size(); i++) {
        String postId = listUserPosts.get(i).getPostId();
        ParseQuery<ParseObject> query = ParseQuery.getQuery("Media");
        query.whereEqualTo("post_id", postId);
        query.findInBackground(new FindCallback<ParseObject>() {
            private int currentI = i;
    
            @Override
            public void done(List<ParseObject> objects,   ParseException e) {
                if (objects.size() > 0) {
                    for (int j = 0; j < objects.size(); j++) 
                    {
                        ParseObject parseObject = objects.get(j);
                        //fetching data from parseObject
                    }
                } 
                if (currentI + 1 == listUserPosts.size()) {
                    // It is finished. Do whatever you have to do here.
                }
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      • 2015-11-27
      • 2019-09-08
      • 1970-01-01
      相关资源
      最近更新 更多