带有 Endpoints Proto Datastore 的 GAE NDB:如何格式化引用 属性 的响应字段?
GAE NDB with Endpoints Proto Datastore: How to format response fields of reference property?
我在 DataStore 模型中有父子关系:Building
实体与 Office
的引用实体。我在 Building
模型上执行查询,我想在 JSON 响应中限制 Office
实体的字段。
这是我的代码:
@Building.query_method(collection_fields=('id', 'name', 'office'), path='buildings', name='list')
def List(self, query):
return query
collection_fields
属性仅在定义父实体字段(建筑物)时效果很好,但如何限制子实体的字段?
这是我在 JSON 中的回复消息:
{ id : 5
name : 'building name'
office: {
name: 'office name',
field1 : 'test',
field1 : 'test',
field1 : 'test'
}
}
我想从 Office
对象(即 field1、field2 等)中删除一些字段以减少 JSON 响应大小。
Define limited_message_fields_schema
of Office
object 不是好的解决方案,因为它在全球范围内工作。我只想格式化这个查询。
您可以在 Building
模型中创建 EndpointsAliasProperty
,您可以在其中转换 self.office
并在 collection_fields
中使用该值:
@EndpointsAliasProperty
def office_ltd(self):
limited = doSomethingWith(self.office)
return limited
@Building.query_method(collection_fields=('id', 'name', 'office_ltd'),
path='buildings', name='list')
def List(self, query):
return query
我在 DataStore 模型中有父子关系:Building
实体与 Office
的引用实体。我在 Building
模型上执行查询,我想在 JSON 响应中限制 Office
实体的字段。
这是我的代码:
@Building.query_method(collection_fields=('id', 'name', 'office'), path='buildings', name='list')
def List(self, query):
return query
collection_fields
属性仅在定义父实体字段(建筑物)时效果很好,但如何限制子实体的字段?
这是我在 JSON 中的回复消息:
{ id : 5
name : 'building name'
office: {
name: 'office name',
field1 : 'test',
field1 : 'test',
field1 : 'test'
}
}
我想从 Office
对象(即 field1、field2 等)中删除一些字段以减少 JSON 响应大小。
Define limited_message_fields_schema
of Office
object 不是好的解决方案,因为它在全球范围内工作。我只想格式化这个查询。
您可以在 Building
模型中创建 EndpointsAliasProperty
,您可以在其中转换 self.office
并在 collection_fields
中使用该值:
@EndpointsAliasProperty
def office_ltd(self):
limited = doSomethingWith(self.office)
return limited
@Building.query_method(collection_fields=('id', 'name', 'office_ltd'),
path='buildings', name='list')
def List(self, query):
return query