【问题标题】:Mobile backend starter datastore queries for multi-valued properties多值属性的移动后端起始数据存储查询
【发布时间】:2013-06-23 16:09:36
【问题描述】:

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

因此,总是返回一个空列表。如果未指定过滤器,则所有属性都按预期从后端返回。

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

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    列表/地图:

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

    所以您不能将该列表/地图用作过滤器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 2016-11-02
      相关资源
      最近更新 更多