3

您好
,我正在使用 Parse,我已经成功地创建了一个包含两个类/表、Users 和 Posts 的云数据库,我能够注册和登录用户并允许他们向数据库发布帖子。
我现在正在尝试弄清楚如何查询数据库并获取已发布的数据,我的 Posts 类/表由四列组成:| 对象 ID | 正文 | 用户 | 创建于 |。
我希望能够在我的应用程序中选择并显示“文本”列中保存的所有数据。如果这是一个愚蠢的问题,我的数据库经验很少。

到目前为止的代码:

    ParseQuery<ParseObject> query = ParseQuery.getQuery("Posts");
    query.findInBackground(new FindCallback<ParseObject>() {

        @Override
        public void done(List<ParseObject> text, ParseException e) {

            if (e == null) {


                 Toast.makeText(MainActivity.this, text.toString(), Toast.LENGTH_LONG).show();

            }

            else {

                Toast.makeText(MainActivity.this, "query error: " + e, Toast.LENGTH_LONG).show();
            }

        }
    });

我知道我需要将查询限制为仅来自“文本”列的数据,所以我显然在第 1 行和第 2 行之间缺少一行代码。

任何帮助将不胜感激。谢谢。

4

1 回答 1

5

从解析 API

您可以通过使用一组键调用 selectKeys 来限制返回的字段。要检索仅包含 score 和 playerName 字段(以及特殊的内置字段,例如 objectId、createdAt 和 updatedAt)的文档:

   ParseQuery<ParseObject> query = ParseQuery.getQuery("GameScore");
   query.selectKeys(Arrays.asList("playerName", "score"));
   List<ParseObject> results = query.find();

因此,要检索 Text 字段,您所要做的就是:

ParseQuery<ParseObject> query = ParseQuery.getQuery("Posts");
query.selectKeys(Arrays.asList("text"));
    query.findInBackground(new FindCallback<ParseObject>() {

        @Override
        public void done(List<ParseObject> posts, ParseException e) {

            if (e == null) {
                List<String> postTexts = new ArrayList<String>();
                for(ParseObject post : posts){
                   postTexts.add(post.getString("text"));
                }
                Toast.makeText(MainActivity.this, postTexts.toString(), Toast.LENGTH_LONG).show();
            }

            else {
                Toast.makeText(MainActivity.this, "query error: " + e, Toast.LENGTH_LONG).show();

            }

        }
    });

API参考

文档参考(就在标题“数组值查询”之前)

于 2015-03-16T10:51:34.267 回答