慕運(yùn)維8079593
2021-07-26 12:01:48
例如,從提供的appengine-angular-gotodos 中獲取以下代碼片段:func getAllTodos(c appengine.Context) ([]Todo, error) { todos := []Todo{} ks, err := datastore.NewQuery("Todo").Ancestor(defaultTodoList(c)).Order("Created").GetAll(c, &todos) if err != nil { return nil, err } for i := 0; i < len(todos); i++ { todos[i].Id = ks[i].IntID() } return todos, nil}如果將查詢更改為不包含.Ancestor(defaultTodoList(c)).該函數(shù),則無(wú)法返回任何待辦事項(xiàng)結(jié)果。如果實(shí)體與祖先一起保存,您是否必須通過(guò)該祖先查詢它?無(wú)論實(shí)體是子實(shí)體還是根實(shí)體,您如何查詢實(shí)體?鑒于需要進(jìn)行無(wú)祖先查詢,在對(duì)應(yīng)用程序建模時(shí)應(yīng)該考慮哪些性能和架構(gòu)?
2 回答

白衣染霜花
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊
如果實(shí)體與祖先一起保存,您是否必須通過(guò)該祖先查詢它?
不,你不必。
無(wú)論實(shí)體是子實(shí)體還是根實(shí)體,您如何查詢實(shí)體?
從這里簡(jiǎn)化為盡可能簡(jiǎn)單的示例:
//Assuming c is your appengine context
q = datastore.NewQuery("MyObject") // Can add filters and sorting here if desired.
for t := q.Run(c);; {
var x MyObject
key, err := t.Next(&x)
}
我還在這里找到了這個(gè)注釋:
注意:設(shè)置祖先過(guò)濾器允許強(qiáng)一致性查詢。沒(méi)有祖先過(guò)濾器的查詢只返回最終一致的結(jié)果。
這很重要,因?yàn)槲蚁嘈努F(xiàn)在所有的數(shù)據(jù)存儲(chǔ)都是 HRD。您可以閱讀有關(guān)高復(fù)制數(shù)據(jù)存儲(chǔ)的更多信息。
- 2 回答
- 0 關(guān)注
- 240 瀏覽
添加回答
舉報(bào)
0/150
提交
取消