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 データストア パッケージはデータ構造の処理が非常に厳密であり、Python のデータストア API のすべての機能をサポートしているわけではないことに注意することが重要です。したがって、制限を理解し、それに応じてデータ モデルを設計することが重要です。
以上がGo でデータストアからネストされた構造体とスライスをロードするときにエラーを処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。