英文:
Google App Engine: One To Many relations in Go
问题
我目前正在决定为一个(小型)社交网络选择使用哪种技术栈。我希望使用golang和Google App Engine进行编码,因为这样可以得到干净、快速的代码,并享受现代云服务和托管的所有优势。
在GAE中使用golang,你可以如下实现一对多和/或多对一的关系。根据文档,只要自定义类型的属性符合文档中提到的要求,就可以在数据存储结构中使用它们。例如:
type Comment struct {
Title string
Text string
User *User
}
type Photo struct {
Description string
Comments []*Comment
}
在我看来,这样是可以的,我是对的吗?如果我是对的,我应该如何:
a) 用一次查询填充这个关系?
b) 以一种方便的方式向照片添加评论?(例如MongoDB的$push
)
最好的,
Michel
英文:
I am currently in the process on deciding which stack I'll use for a (small) social network . I would love to code it in golang on top of Google App Engine since this would result in clean, fast code with all the advantages of modern cloud services & hosting.
How would you implement one-to-many and/or many-to-one relationships in GAE with golang? According to the docs you can use your own types in datastore-structs, as long as their properties are the ones mentioned in the documentation. So for example:
type Comment struct {
Title string
Text string
User *User
}
type Photo struct {
Description string
Comments []*Comment
}
should work in my opinion, am I right? And if I am right, how can I:
a) populate this relationship in one query?
b) add comments to a photo in a convenient way? (such as MongoDBs '$push')
best,
Michel
答案1
得分: 2
在App Engine上,您可以使用两种实体类型来建模:
type Comment struct {
Title string
Text string
User *User
}
type Photo struct {
Description string
}
使用祖先路径将子评论与父照片关联起来。您可以通过单个查询获取照片的所有评论。您可以通过添加新的评论实体来添加评论。
根据文档,我认为您可以使用问题中的类型来存储照片(但我个人没有在实体中嵌套三个级别的经验)。要使用此设计添加评论,应用程序会获取照片(其中包括评论),将评论添加到照片中,并将带有所有评论的照片放回数据存储。
App Engine没有像Mongo的$push那样的实体修改操作符。
英文:
On App Engine, you can model this with two entity types:
type Comment struct {
Title string
Text string
User *User
}
type Photo struct {
Description string
}
Use an ancestor path to associate child comments with a parent photo. You can get all comments for a photo in a single query. You can add comments by putting new comment entities.
I think you can store a photo using the types in the question (it looks like you can according to the doc, but I have no personal experience with nesting three levels in an entity). To add a comment with this design, the application fetches the photo (this will include the comments), adds the comment to the photo, and puts the photo with all comments back to the datastore.
App Engine does not have entity modification operators like Mongo's $push.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论