Mengendalikan Nested Slices dalam Go Datastore: Ralat dan Penyelesaian
Apabila cuba memuatkan entiti Google AppEngine datastore ke dalam projek Go, pembangun mungkin menghadapi ralat berikut: "simpan data: meratakan struct bersarang membawa kepada sekeping kepingan: medan 'Mesej'". Ralat ini timbul apabila definisi model Go menyertakan kepingan struct yang turut mengandungi kepingan.
Untuk menyelesaikan isu ini, adalah penting untuk memahami bahawa stor data Go tidak menyokong kepingan berbilang lapisan. Pembangun mempunyai pilihan berikut:
Contoh:
Pertimbangkan takrif model berikut:
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>
Dalam kes ini, ralat timbul kerana model Go mentakrifkan sekeping ModelB (ModelA.Messages). Walau bagaimanapun, ModelB sendiri mempunyai kepingan (ModelB.MessageID). Untuk menyelesaikan isu ini, sama ada pastikan ModelA.Messages ialah kepingan rata ModelB atau reka bentuk semula struktur data untuk mengelakkan kepingan bersarang.
Atas ialah kandungan terperinci Cara Mengendalikan \'datastore: meratakan struct bersarang membawa kepada sekeping hirisan\' Ralat dalam Go Datastore?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!