android - 即使成功固定后,ParseQuery 在从本地数据存储查询时也给出 0 个对象

标签 android parse-platform offline querying pinning

我正在使用 parse.com 的 Android SDK,并且遇到了一个特殊问题。

来自 fragment 的 onCreate:

  1. 从服务器获取一个对象。
  2. 固定它。
  3. 从本地数据存储区获取对象。

以下是 onCreate 中的代码 fragment :

ParseObject myChatGroup = ParseObject.createWithoutData("ChatGroup", "mOJGWRiLPC");
    myChatGroup.fetchInBackground(new GetCallback<ParseObject>() {
        @Override
        public void done(ParseObject chatGroup1, ParseException e) {
            if (e == null) {
                l.d("Fetched chat group: " + chatGroup1 + " from server");
                chatGroup1.pinInBackground(new SaveCallback() {
                    @Override
                    public void done(ParseException e) {
                        if (e == null) {
                            l.d("Successfully pinned chat group");
                            ParseQuery<ParseObject> chatGroupParseQuery = new ParseQuery<>("ChatGroup");
                            chatGroupParseQuery.fromLocalDatastore()
                                    .findInBackground(new FindCallback<ParseObject>() {
                                        @Override
                                        public void done(List<ParseObject> list, ParseException e) {
                                            if (e == null) {
                                                l.d("Found " + list.size() + " chat groups from local datastore");
                                            } else {
                                                e.printStackTrace();
                                            }
                                        }
                                    });
                        } else {
                            e.printStackTrace();
                        }
                    }
                });
            } else {
                e.printStackTrace();
            }
        }
});

这是日志:

Fetched chat group: ChatGroup { objectId: mOJGWRiLPC, name: Admin } from server
Successfully pinned chat group
Found 0 chat groups from local datastore

但这没有任何意义!我刚刚固定了一个对象,那么本地数据存储中怎么会有 0 个对象。代码就这么简单。 我做错了什么?会不会是 SDK 的错误?
任何见解将不胜感激,我几天来一直在努力寻找问题。

解析设置对我来说看起来不错:

    ParseObject.registerSubclass(ChatGroup.class);
    Parse.enableLocalDatastore(this);
    Parse.initialize(this, AppProps.properties.appId,
            AppProps.properties.clientKey);
    ParseUser.enableRevocableSessionInBackground();
    Parse.setLogLevel(Parse.LOG_LEVEL_DEBUG);

注意:

  • 当尝试使用 ParseUser 对象相同的逻辑时,它工作得很好。甚至我的其他类(例如 Message)也让我怀疑我的 ChatGroup 类出了问题。
  • 我已向 parse.com 数据浏览器上的 ChatGroup 类添加了两个字段:name(String) 和 messages(Relation),并对名为 Admin 的角色具有读写权限。
  • 当浏览到实际的解析数据库(使用 root 访问权限)时,我发现数据库表 (ParseObjects) 确实包含我固定的行。但不知何故,解析在查询时显示 0 结果!

最佳答案

Parse 似乎不支持本地数据存储上的 ACL。因此,解决这个问题的最简单方法是在查询上执行ignoreACLs()——假设您在服务器端正确设置了角色/acls,因此您在本地固定的任何内容都应该在权限方面已经可以了。 p>

关于android - 即使成功固定后,ParseQuery 在从本地数据存储查询时也给出 0 个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30694602/

相关文章:

android - 图片不适合 android react native

java - 如何在一个字符串中存储多个单词而不替换java中的旧单词

android - 将 native Android 应用程序转换为 gradle-experimental 0.2.0

ios - PF LogInViewController Logo 扁平化

android - 适用于 Android 和 iOS 的离线 map SDK

android - onStartListener 可用于 Activity

parse-platform - 如何防止 parse.com 用户看到他们的部分用户数据?又名在用户类上为每个字段设置 ACL?

ios - 使用带云代码的 Stripe + Parse 存储信用卡

android - 在没有互联网的情况下唤醒锁定的手机

caching - 如何列出 Service Worker 已存储在浏览器缓存中的博客文章?