我目前正在开发一个项目,现在我有一些基本的Javascript
blah.map(function(lBlah) {});
blah
是从对数据库的ajax请求生成的,该数据库返回一个对象数组(如果您愿意,则返回切片)
唯一的问题是我收到了JS错误:cannot read property 'map' of null
这是因为如果我的one-to-many
关联当时没有关联的值,那么它只会使该字段nil
而不是空切片所以当我json.Marshal
时它会发送一个空值而不是一个空[]
,这将修复我的所有错误,目前必须超出从数据库返回的每个struct
和检查nil值然后make([]blah, 0)
很烦人,看起来很乱。有没有更简单的方法来实现这一目标?是否可以设置默认json:"default:[]"
或其他内容?
// ForumContainer is a table in the database
type ForumContainer struct {
gorm.Model
ContainerName string `sql:"not null;unique"`
AccessLevel int `sql:"not null;default:0"`
MainThreads []ForumMainThreads
}
// ForumMainThreads is the table in the database
type ForumMainThreads struct {
gorm.Model
ForumContainerID int `sql:"index"`
ThreadName string `sql:"not null;unique"`
Threads int `sql:"not null;default:0"`
Replies int `sql:"not null;default:0"`
AccessLevel int `sql:"not null;default:0"`
Posts []ForumMainThreadsPosts
}
// ForumMainThreadsPosts is a table in the database
type ForumMainThreadsPosts struct {
gorm.Model
UserID int `sql:"index"`
ForumMainThreadsID int `sql:"index"`
Title string `sql:"not null;unique"`
Body string `sql:"type:text;not null"`
Sticky bool `sql:"not null;default:0"`
Views int `sql:"not null;default:0"`
ReplyCount int `sql:"not null;default:0"`
Replies []ForumMainPostsReplies
}
// ForumMainPostsReplies is a table in the database
type ForumMainPostsReplies struct {
gorm.Model
ForumMainThreadsPostsID int `sql:"index"`
UserID int `sql:"index"`
Body string
}
通过以下方式完成查询:
db.Preload("MainThreads").Find(&forumContainers)