2017-04-12 85 views
1

我有两个实体。类别和产品。每个产品可以有多个类别,每个类别可以属于多个类别。我希望能够返回所有产品,并为每个产品分配其所有类别及其父类别。数据存储是这样的一个很好的选择吗?Google datastore建模

例如产品响应:

{ 
    id: 1, 
    name: "shoes", 
    categories: [{ 
     id:1, 
     ordinal:1 
    },{ 
     id:2, 
     ordinal:1 
    }] 
} 

回答

0

我假设你的意思是“数据存储”,你写的“数据流”

这取决于如果你想根据类别或不以后查询。

如果你不需要查询根据类别

我建议你定义在类的模型(具有相应的父/子关系),然后在LocalStructuredProperty将每个类别的产品。数据存储将保存为blob,但在检索产品时会重建类别实体模型。您还可以添加一个带有序列化字符串的JsonProperty,其中包含每个产品的类别结构。例如:

[ 
    0: { 
    category: 'Electronics', 
    subcategories: ['Smartphones', 'Telephones', 'Gadgets'] 
    }, 
    1: { 
    category: 'Apple', 
    subcategories: ['iPhone'] 
    } 
] 

Read more about the LocalStructuredProperty and the JsonProperty here (for Python client library)


如果您需要查询根据类别

那么你应该使用一个StructuredProperty。创建一个模型来定义你的类别和他们的祖先路径。然后,在实例化产品实体时,您可以将一个或多个类别(连同其父母)添加到产品实体中。

Datastore文档中的Entity Property Reference有一个关于如何实现它的好例子(在Python中,但也可用于其他语言)。这里是你如何filter for StructuredProperty values

+0

谢谢你的回答!是的,我的意思是数据存储。我需要通过他们的类别来查询事件。 – chchrist

相关问题