我已经开始使用Mobile Backend Starter实现我自己的示例,并且无法解决查询的一个问题。 根据规范https://developers.google.com/appengine/docs/java/datastore/queries,对于单值或多值属性,使用过滤器进行查询应该没有区别。
不幸的是,我无法使用Mobile Backend Starte页面上提供的Android应用示例。
以下是我用来添加多值属性的代码:
newPost.put("tags", Arrays.asList("one","two","three"));
和我用来获取包含指定属性之一的每条记录的过滤器:
CloudQuery query = new CloudQuery("Guestbook");
query.setFilter(F.eq("tags","two"));
getCloudBackend().list(query, handler);
因此,始终返回空列表。如果未指定过滤器,则会按预期从后端返回所有属性。
是否可以使用当前实现查询多值属性?
答案 0 :(得分:0)
可以查询多值属性。您可以使用过滤谓词
Filter tagfilter = new FilterPredicate("tags",
FilterOperator.EQUAL,
"two");
query.setFilter(tagfilter);
答案 1 :(得分:0)
据我所知,Mobile Backend Starter的答案是否定的。虽然我不知道google-cloud-endpoints。
如果我理解正确,您发送CloudEntity
(newPost
),其属性为List
。在"documentation" of mobile backend starter中,他们说CloudEntity
支持的类型之一是:
列表/地图:
java.util.List或java.util.Map对象,可以包含长字符串 (超过500个字符)和子列表/地图。这些元素是 没有在数据存储上建立索引,不能用作查询 过滤/排序条件。不存储空列表/地图 数据存储
因此无法将该列表/地图用作过滤器。