我遇到了一个独特的问题。为了学习golang,我创建了一个twitter类型的网站。它具有推文,每个推文可以具有评论,每个评论可以具有子评论。
在homepage.html中显示struct pd
Env.Tpl.ExecuteTemplate(w, "homePage.html", pd)
其中pd是pagedata(为简单起见,我删除了其他信息)
type PageData struct {
TweetView []tweets.TweetView
}
tweet.TweetView在哪里
type TweetView struct {
Tweet
CV []comments.Comment
}
注释在哪里
type Comment struct {
TweetID int64
ParentCommentID int64
CommentID int64
CreatedAt time.Time
Name string
UserID int64
CommentMsg string
}
这可行。但是如果我用comment.CommentView ..模板更改tweetView中的简历,则停止显示TweetView。
comment.CommentView是
输入CommentView struct {
评论
CC []评论
}
新的TweetView将被定义为
type TweetView struct {
Tweet
CV []comments.CommentView
}
尝试进行数据存储区查询以将tweet对象提取到Tweetview时遇到此错误
err := datastore.Get(ctx, tweetKey, &tweetView[v])
数据存储区:展平嵌套结构会导致一片slices:field
“简历”,
我认为这是golang的局限性。我该怎么办?
最佳答案
我能够解决问题。问题出在datastore.Get查询。
当我跑步时它给出了以下错误
err := datastore.Get(ctx, tweetKey, &tweetView[v])
数据存储区:展平嵌套结构会导致一片slices:field
“简历”,
所以我改变了这样的查询
var tweetTemp Tweet
datastore.Get(ctx, tweetKey, &tweetTemp)
tweetSlice[v].Tweet = tweetTemp
如果您发现此方法有问题,请告诉我