我在我的Android应用程序中使用 Parse ,并且我执行以下基本查询:
List<ParseObject> activityList = null;
ParseQuery<ParseObject> query = ParseQuery.getQuery("Activity");
query.setLimit(10);
try {
activityList = query.find();
} catch (ParseException e) {
e.printStackTrace();
}
Toast.makeText(Main.this, "Test "+activityList.size(), Toast.LENGTH_LONG).show();
我得到的输出是: 文字0
这真的很奇怪!因为我可以在Parse数据浏览器中明确看到存在2个结果!这可能是 ACL 或其他什么?
以下是我的解析数据浏览器
的图片
正如您所看到的,存在2条记录。注意我不知道 ACL 是什么,这可能是问题..
答案 0 :(得分:2)
很可能是未定义的ACL导致您的访问问题(后端的实体未被GET检索)。
所以,你应该阅读有关ACL和安全性的android手册部分。作为入门者,当你创建一个对象时,你应该为所有者构建一个带有READ&amp; WRITE的ACL,为其他人构建READ ......
在android中授予对所有者的世界读/写或独占读/写,即:
aclOb1 = new ObjectMapper().createObjectNode();
aclOb2 = new ObjectMapper().createObjectNode();
aclOb2.put("read", true);
aclOb2.put("write", true);
String oid = $Get.current.user
if(oid.equalsIgnoreCase("default")){
aclOb1.put("*", aclOb2);
}else{
aclOb1.put(oid, aclOb2);
}
rootOb.put("ACL", aclOb1);
对于JS中的ACL示例,请参阅链接中的createOnEnter method