Google App Engine:Go中的一对多关系

时间:2014-09-25 10:16:23

标签: mongodb google-app-engine go google-cloud-datastore rdbms

我目前正在决定将哪个堆栈用于(小型)社交网络。我很乐意在谷歌应用引擎之上的golang中编码,因为这会产生干净,快速的代码,具有现代云服务的所有优点。托管。

如何使用golang在GAE中实现一对多和/或多对一关系?根据文档,您可以在数据存储结构中使用自己的类型,只要它们的属性是文档中提到的属性即可。例如:

type Comment struct {
    Title    string  
    Text     string
    User     *User 
}

type Photo struct {
    Description   string
    Comments      []*Comment
}

应该在我看来,我是对的吗?如果我是对的,我该怎么办:

a)在一个查询中填充此关系?

b)以方便的方式为照片添加评论? (例如MongoDBs' $ push')

最好的, 米歇尔

1 个答案:

答案 0 :(得分:2)

在App Engine上,您可以使用两种实体类型对其进行建模:

type Comment struct {
    Title    string  
    Text     string
    User     *User 
}

type Photo struct {
  Description   string
}

使用ancestor path将儿童评论与父照片相关联。您可以在单个查询中获取照片的所有评论。您可以通过添加新评论实体来添加评论。

我认为您可以使用问题中的类型存储照片(看起来您可以根据文档,但我没有在实体中嵌套三个级别的个人经验)。要使用此设计添加注释,应用程序将获取照片(这将包括注释),将注释添加到照片,并将包含所有注释的照片放回数据存储区。

App Engine没有像Mongo的$ push那样的实体修改操作符。