【发布时间】:2014-05-20 11:42:33
【问题描述】:
我正在使用 objectify 从 GAE 端点内与数据存储进行交互。为了节省带宽,我试图只返回某些实体的相关字段。在来自客户端的端点上,我尝试使用 setFields() 方法,但似乎它只是在客户端上过滤,而不是在服务器上。响应大小保持不变。
有没有办法只使用端点的对象化来检索或发送特定字段?
【问题讨论】:
标签: google-app-engine google-cloud-endpoints objectify
我正在使用 objectify 从 GAE 端点内与数据存储进行交互。为了节省带宽,我试图只返回某些实体的相关字段。在来自客户端的端点上,我尝试使用 setFields() 方法,但似乎它只是在客户端上过滤,而不是在服务器上。响应大小保持不变。
有没有办法只使用端点的对象化来检索或发送特定字段?
【问题讨论】:
标签: google-app-engine google-cloud-endpoints objectify
对数据存储区的查询会返回完整的实体及其所有属性(“字段”)。如果您只想返回某些字段,则需要以编程方式构建响应。查询,拉取所需属性,返回。
如果您发现自己不断构建实体子集,您可能需要重新考虑每个模型中的属性。换句话说,考虑添加一些更瘦的模型,只有流行的属性。
【讨论】:
您可以使用投影查询仅提取实体的一部分属性。
https://developers.google.com/appengine/docs/java/datastore/projectionqueries
我认为 Objectify 不支持投影查询,因此您可能必须使用 Low-level Datastore API。
另一种方法是将您的实体分成两部分。这可能是要走的路,特别是如果只有一个部分包含经常更新的属性(除了节省带宽之外,您还可以节省编写成本)。
【讨论】: