第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

祖先查詢直接后代 - Google 數(shù)據(jù)存儲

祖先查詢直接后代 - Google 數(shù)據(jù)存儲

Go
桃花長相依 2021-11-15 15:29:24
我正在使用 Go 和 Google Datastore 在 Google App Engine 中構(gòu)建目錄應(yīng)用程序。我正在使用數(shù)據(jù)存儲的Ancestor功能來管理不同的產(chǎn)品類別。以下是一些數(shù)據(jù)的示例:Musical Instruments -> Guitars -> Gibson -> Les PaulMusical Instruments -> Guitars -> Fender -> StratocasterMusical Instruments -> Bass Guitars -> Music Man -> Stingray樂器是根實(shí)體。當(dāng)我點(diǎn)擊它時(shí),我希望看到Guitars和Bass Guitars,但我看到的是所有東西都是Musical Instruments最后一個(gè)實(shí)體的后代。這不是我要找的。在這一點(diǎn)上,我只對樂器的直系后代感興趣。一些帖子,比如這個(gè)帖子,建議在數(shù)據(jù)存儲中創(chuàng)建一個(gè)字段來跟蹤直接父母。但是,如果我要手動(dòng)跟蹤父實(shí)體,為什么要使用這些Ancestor功能呢?它會(huì)比過濾匹配直接父字段的查詢更快嗎?這是獲取類別的方法:func (cat *Category) GetCategories(r *http.Request, pk string) ([]CategoryReturn, error) {//get contextc := appengine.NewContext(r)var q *datastore.Queryvar err error//get parent keyk, err := datastore.DecodeKey(pk)if err != nil {    //handle error    return []CategoryReturn{}, err}q = datastore.NewQuery("Category").Ancestor(k)//populate category slicesvar categories []CategoryReturnkeys, err := q.GetAll(c, &categories)if err != nil {    //handle error    return []CategoryReturn{}, err}//create return objectresults := make([]CategoryReturn, 0, 20)for i, r := range categories {    k := keys[i]    y := CategoryReturn {        Name: r.Name,        Id: k.IntID(),        Key: k.Encode(),    }    results = append(results, y)}return results, nil}
查看完整描述

1 回答

?
慕容3067478

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊

您需要考慮應(yīng)用程序中確實(shí)需要強(qiáng)一致性的任何部分,然后考慮哪些實(shí)體和實(shí)體組需要參與相應(yīng)的查詢和事務(wù)(現(xiàn)在跨組事務(wù)中最多可以有 25 個(gè)),但你以這種方式使用祖先為我敲響了警鐘。

通過將實(shí)體組視為邏輯構(gòu)建數(shù)據(jù)模型的一種方式,很容易被它們所吸引(我有?。@可能會(huì)導(dǎo)致問題,最終導(dǎo)致不必要的大型實(shí)體組上的寫入爭用。

相反,最好考慮應(yīng)用程序中需要強(qiáng)一致性的點(diǎn)并圍繞它設(shè)計(jì)實(shí)體組。

在這種情況下,我可能只有一個(gè)parentCategory屬性(類型datastore.Key)。然后,您可以像這樣查詢樂器的子類別:

k := datastore.NewKey(c, "Category", "Musical Instruments", 0, nil)
q := datastore.NewQuery("Category").Filter("parentCategory =", k)

(我對 Go 很陌生,所以以上可能是一個(gè)近似值)

每個(gè)類別中假設(shè)你有某種形式的Product,你想查詢所有Product內(nèi)給予A SCategory在樹中在任何級別(例如,電視廣播員吉他,或的Minimoog樂器,那么你可能需要一個(gè)多值屬性(在去我猜這可能是一個(gè)[]datastore.Key切片)代表類別樹的分支。


查看完整回答
反對 回復(fù) 2021-11-15
  • 1 回答
  • 0 關(guān)注
  • 213 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號