我想使用mgo创建/保存MongoDB集合。但是我想更广泛地定义它(例如,要提到其中一个属性是强制性的,另一个则是枚举类型并具有默认值)。
我已经定义了这样的结构,但是不知道如何描述它的约束。
type Company struct {
Name string `json:"name" bson:"name"` // --> I WANT THIS TO BE MANDATORY
CompanyType string `json:"companyType" bson:"companyType"` // -->I WANT THIS TO BE AN ENUM
}
是否可以在mgo中完成,就像我们在MongooseJS中如何做到一样?
最佳答案
mgo不是ORM或验证工具。 mgo只是MongoDB的接口。
独自进行验证也不错。
type CompanyType int
const (
CompanyA CompanyType = iota // this is the default
CompanyB CompanyType
CompanyC CompanyType
)
type Company struct {
Name string
CompanyType string
}
func (c Company) Valid() bool {
if c.Name == "" {
return false
}
// If it's a user input, you'd want to validate CompanyType's underlying
// integer isn't out of the enum's range.
if c.CompanyType < CompanyA || c.CompanyType > CompanyB {
return false
}
return true
}
查看this以获得有关Go中枚举的更多信息。