在Go 中載入資料儲存實體時嵌套結構切片的錯誤處理
將資料從儲存在資料儲存中的Python 實體遷移到Go 專案時,您可能會遇到錯誤訊息,指示:「資料儲存:展平嵌套結構會導致切片切片」。出現此錯誤的原因是 Go 的資料儲存包和 Python 的資料儲存 API 之間的資料結構處理存在根本差異。
Go 中的資料儲存包不支援巢狀切片,這表示結構不能包含切片的切片。例如,考慮以下 Python 模型定義:
<code class="python">class ModelA(ndb.Model): ... messages = ndb.LocalStructuredProperty(ModelB, name='bm', repeated=True)</code>
在此模型中,訊息是引用 ModelB 的重複 LocalStructuredProperty。反過來,ModelB 可能有自己的切片或重複屬性。
但是,對應的Go 結構體必須遵循特定的限制才能與Datastore 套件相容:
<code class="go">type ModelA struct { ... Messages []ModelB `datastore:"bm,"` }</code>
在此程式碼中, Messages 定義為ModelB 結構體的切片,表明ModelB本身不能有任何切片。否則,將會出現錯誤「資料儲存:扁平化嵌套結構導致切片切片」。
可能的解決方案
要解決此問題,請考慮以下選項:
需要注意的是,Go datastore 套件對資料結構的處理非常嚴格,並且不支援Python Datastore API 的所有功能。因此,了解這些限制並相應地設計資料模型非常重要。
以上是在 Go 中從資料儲存載入嵌套結構和切片時如何處理錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!