是否有可能让GORM用空切片填充nil值而不是nil?

时间:2015-12-13 01:07:39

标签: javascript go go-gorm

我目前正在开发一个项目,现在我有一些基本的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)

0 个答案:

没有答案