移动后端启动器数据存储区查询多值属性

时间:2013-06-23 16:09:36

标签: android google-cloud-endpoints google-cloud-datastore

我已经开始使用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);

因此,始终返回空列表。如果未指定过滤器,则会按预期从后端返回所有属性。

是否可以使用当前实现查询多值属性?

2 个答案:

答案 0 :(得分:0)

可以查询多值属性。您可以使用过滤谓词

Filter tagfilter = new FilterPredicate("tags",
                      FilterOperator.EQUAL,
                      "two");
query.setFilter(tagfilter);

答案 1 :(得分:0)

据我所知,Mobile Backend Starter的答案是否定的。虽然我不知道google-cloud-endpoints。

如果我理解正确,您发送CloudEntitynewPost),其属性为List。在"documentation" of mobile backend starter中,他们说CloudEntity支持的类型之一是:

  

列表/地图:

     

java.util.List或java.util.Map对象,可以包含长字符串   (超过500个字符)和子列表/地图。这些元素是   没有在数据存储上建立索引,不能用作查询   过滤/排序条件。不存储空列表/地图   数据存储

因此无法将该列表/地图用作过滤器