2017-04-12 48 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