我如何使用数据存储 java 客户端检索具有重复属性的嵌入式实体
How would I retrieve an Embedded Entity with repeated properties using datastore java client
我使用 AppEngine SDK 的 python API 在数据存储上创建了实体,我想在 Google Cloud Dataflow (Java) 上检索它们。实体的结构是这样的:
- 实体
- embedded_entity(ndb.StructuredProperty(重复=真))
- 名字
- 名字
- 名字
- 名字
检索会像这样,但我知道我错过了提取数据的步骤。
static class EmbeddedStringExtractor extends DoFn<Entity, String> {
@Override
public void processElement(ProcessContext c) {
Map<String, Value> main_entity_map = DatastoreHelper.getPropertyMap(c.element());
Entity embedded_entity = entity.get("embedded_entity").getEntityValue();
// missing step
Map<String, Value> embedded_entity_map = DatastoreHelper.getPropertyMap(embedded_entity);
String some_string = DatastoreHelper.getString(embedded_entity_map.get("name"));
}
}
我将如何遍历所有重复的属性?
好的,知道了。这就是我启用它的方式:
static class EmbeddedStringExtractor extends DoFn<Entity, String> {
@Override
public void processElement(ProcessContext c) {
Map<String, Value> main_entity_map = DatastoreHelper.getPropertyMap(c.element());
List<Value> embedded_entity_values = entity.get("embedded_entity").getListValueList();
for (Value embedded_entity_value: embedded_entity_values){
Entity embedded_entity = embedded_entity_value.getEntityValue();
Map<String, Value> embedded_map = DatastoreHelper.getPropertyMap(embedded_entity);
String embedded_name = DatastoreHelper.getString(embedded_map.get("name"));
}
// And then just c.output whatever you need.
}
}
只需要习惯 Java API。
我使用 AppEngine SDK 的 python API 在数据存储上创建了实体,我想在 Google Cloud Dataflow (Java) 上检索它们。实体的结构是这样的:
- 实体
- embedded_entity(ndb.StructuredProperty(重复=真))
- 名字
- 名字
- 名字
- 名字
- embedded_entity(ndb.StructuredProperty(重复=真))
检索会像这样,但我知道我错过了提取数据的步骤。
static class EmbeddedStringExtractor extends DoFn<Entity, String> {
@Override
public void processElement(ProcessContext c) {
Map<String, Value> main_entity_map = DatastoreHelper.getPropertyMap(c.element());
Entity embedded_entity = entity.get("embedded_entity").getEntityValue();
// missing step
Map<String, Value> embedded_entity_map = DatastoreHelper.getPropertyMap(embedded_entity);
String some_string = DatastoreHelper.getString(embedded_entity_map.get("name"));
}
}
我将如何遍历所有重复的属性?
好的,知道了。这就是我启用它的方式:
static class EmbeddedStringExtractor extends DoFn<Entity, String> {
@Override
public void processElement(ProcessContext c) {
Map<String, Value> main_entity_map = DatastoreHelper.getPropertyMap(c.element());
List<Value> embedded_entity_values = entity.get("embedded_entity").getListValueList();
for (Value embedded_entity_value: embedded_entity_values){
Entity embedded_entity = embedded_entity_value.getEntityValue();
Map<String, Value> embedded_map = DatastoreHelper.getPropertyMap(embedded_entity);
String embedded_name = DatastoreHelper.getString(embedded_map.get("name"));
}
// And then just c.output whatever you need.
}
}
只需要习惯 Java API。