【问题标题】:Querying a Parse database to get the data from one single column within a Parse data Class查询 Parse 数据库以从 Parse 数据类中的单个列中获取数据
【发布时间】:2015-03-16 10:31:59
【问题描述】:

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

到目前为止的代码:

    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 行之间缺少一行代码。

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

【问题讨论】:

    标签: android database parse-platform pfquery parse-android-sdk


    【解决方案1】:

    来自 Parse API

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

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

    所以要检索文本字段,您所要做的就是:

    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();
    
                }
    
            }
        });
    

    APIreference

    Doc reference(就在标题“查询数组值”之前)

    【讨论】:

    • 谢谢,真的很有帮助!还有一个问题,当我执行这段代码时,它似乎返回了数据的 ID/Keys,我如何获取实际的文本字符串??
    • 这样的?字符串文本 = text.getString("text"); (我也会更新答案)
    • 别担心,明白了:String s = text.get(0).getString("text");这将返回位于数据列表位置 0 的字符串。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 2014-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多