我正在使用 parse.com 的 Android SDK,并且遇到了一个特殊问题。
来自 fragment 的 onCreate:
- 从服务器获取一个对象。
- 固定它。
- 从本地数据存储区获取对象。
以下是 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/