处理 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 Datastore 中的'数据存储:扁平化嵌套结构导致切片切片”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!