我有两个实体。分类和产品。每个产品可以有许多类别,每个类别可以属于许多类别。我希望能够返回所有产品,并且每个产品都包含它所属的所有类别及其父类别。数据存储区是一个很好的选择吗?
示例产品响应:
{
id: 1,
name: "shoes",
categories: [{
id:1,
ordinal:1
},{
id:2,
ordinal:1
}]
}
答案 0 :(得分: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。创建模型以定义类别及其祖先路径。然后在实例化时将一个或多个类别(及其父项)添加到Product实体。
数据存储文档中的Entity Property Reference有一个很好的示例,说明如何实现它(在Python中,但也可用于其他语言)。这就是你filter for StructuredProperty values的方式。