Golang revel + mgo - 当结构变量具有小写名称时,不返回任何数据

时间:2016-08-03 04:09:27

标签: mongodb go struct mgo revel

这是我的结构类型

type Category struct {
    Name string     `bson:"listName"`
    Slug string     `bson:"slug"`
}

与以下函数一起使用以返回mongo集合中的所有结果 -

func GetCategories(s *mgo.Session) []Category {
    var results []Category
    Collection(s).Find(bson.M{}).All(&results)
    return results
}

问题是我的db中的字段名称的名称以小写字母开头,但当我尝试使用以小写字母开头的变量名称时,Golang结构返回null。对于例如这将返回一个JSON,其中相应的字段为空 -

type Category struct {
    listName string `bson:"listName"`
    slug string     `bson:"slug"`
}

我实际上是将基于Meteor的API移植到Golang,目前使用API​​的很多产品都依赖于这些字段名称,就像它们在db中一样! 有解决方法吗?

1 个答案:

答案 0 :(得分:1)

您需要使用起始大写字母命名它们,使mgos bson Unmarshall的字段可见。您还需要映射到适当的json / bson字段名称

type Category struct {
    ListName string      `json:"listName" bson:"listName"`
    Slug string          `json:"slug"     bson:"slug"`
}