Go データストアでのネストされたスライスの処理: エラーと解決策
Google AppEngine データストア エンティティを Go プロジェクトにロードしようとすると、開発者は次のような問題に遭遇する可能性があります。次のエラー: 「データストア: ネストされた構造体を平坦化すると、スライスのスライスが生成されます: フィールド 'メッセージ'」。このエラーは、Go モデル定義にスライスも含まれる構造体のスライスが含まれている場合に発生します。
この問題を解決するには、Go データストアが多層スライスをサポートしていないことを理解することが重要です。開発者には次のオプションがあります:
例:
次のモデル定義を考えてみましょう。
Python:
<code class="python">class ModelB(ndb.Model): msg_id = ndb.StringProperty(indexed=False) ... class ModelA(ndb.Model): ... messages = ndb.LocalStructuredProperty(ModelB, name='bm', repeated=True)</code>
Go:
<code class="go">type ModelB struct { MessageID string `datastore:"msg_id,noindex"` ... } type ModelA struct { ... Messages []ModelB `datastore:"bm,"` }</code>
この場合、Go モデルが次のように定義しているため、エラーが発生します。 ModelB (ModelA.Messages) のスライス。ただし、ModelB 自体にはスライス (ModelB.MessageID) があります。この問題を解決するには、ModelA.Messages が ModelB のフラット スライスであることを確認するか、ネストされたスライスを避けるようにデータ構造を再設計します。
以上が「データストア: ネストされた構造体を平坦化すると、スライスのスライスが発生する」という Go データストアのエラーの処理方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。