我目前正在决定将哪个堆栈用于(小型)社交网络。我很乐意在谷歌应用引擎之上的golang中编码,因为这会产生干净,快速的代码,具有现代云服务的所有优点。托管。
如何使用golang在GAE中实现一对多和/或多对一关系?根据文档,您可以在数据存储结构中使用自己的类型,只要它们的属性是文档中提到的属性即可。例如:
type Comment struct {
Title string
Text string
User *User
}
type Photo struct {
Description string
Comments []*Comment
}
应该在我看来,我是对的吗?如果我是对的,我该怎么办:
a)在一个查询中填充此关系?
b)以方便的方式为照片添加评论? (例如MongoDBs' $ push')
最好的, 米歇尔
答案 0 :(得分:2)
在App Engine上,您可以使用两种实体类型对其进行建模:
type Comment struct {
Title string
Text string
User *User
}
type Photo struct {
Description string
}
使用ancestor path将儿童评论与父照片相关联。您可以在单个查询中获取照片的所有评论。您可以通过添加新评论实体来添加评论。
我认为您可以使用问题中的类型存储照片(看起来您可以根据文档,但我没有在实体中嵌套三个级别的个人经验)。要使用此设计添加注释,应用程序将获取照片(这将包括注释),将注释添加到照片,并将包含所有注释的照片放回数据存储区。
App Engine没有像Mongo的$ push那样的实体修改操作符。