我有一个基于谷歌移动后端启动示例的系统,所以一个Android应用程序读取和写入数据存储的东西和一个能够做类似事情的jsp网站。
在我的jsp中,我添加了这样的实体:
Entity ent = new Entity(KeyFactory.createKey(table, "CE:" + UUID.randomUUID().toString()));
ent.setProperty("_createdAt", new Date());
ent.setProperty("_createdBy", user);
ent.setProperty("_kindName", table);
// owner???
ent.setProperty("_updatedAt", new Date());
ent.setProperty("_updatedBy", user);
...
datastore.put(ent);
应用程序本身会创建相同类型的实体:
CloudEntity newPost = new CloudEntity(kindname);
newPost.put("propertyname", propertyvalue);
CloudBackendMessaging cbm = mProcessingFragment.getCloudBackend();
cbm.insert(newPost, handler);
查看Google云端控制台中的数据存储区,实体看起来都一样,我看不出实际数据格式和布局的差异。一切看起来都不错。
当我从Android应用程序运行查询时:
mProcessingFragment.getCloudBackend().listByProperty("kindname", "property", Filter.Op.EQ, datastring, Order.DESC, 1000, Scope.PAST, handler);
仅显示已从应用添加的实体。关于我在JSP中需要做什么来获得实体的任何帮助都将非常感激。
PS。我试图从JSP中删除一个实体,但查询肯定会看到它,因此它不是缓存的东西。
答案 0 :(得分:0)
这种行为的一个可能原因是名称空间。命名空间通常用于隔离数据存储区中的数据。
您是否看到您的应用是否设置了数据存储名称空间?
答案 1 :(得分:0)
所以我终于解决了这个问题。该网站正在创建记录,字段“_createdBy”和“_updatedBy”设置为“用户”,其中
User user = userService.getCurrentUser();
这些看起来就像Google Developer Console中的所有其他字符串,但它们实际上并非如此,您只能通过编辑各个字段来判断它们。
当我的Android应用程序加载时,我认为它加载了所有记录,直到这个记录然后因未报告错误而停止(我的错误是没有报告错误)。
修复是使用user.toString()而不仅仅是用户创建记录。