如何编写多类别的目录(分类法>>100)?

我是 golang 的新手,他是从动态类型语言迁移过来的。


我面临着如何编写具有许多类别/子类别的目录的问题——复杂的分类法。例如:


鞋带 > 鞋履 > 男装 > 鞋履 > 服装 > 首页 > 分类


我使用 mongodb 作为后端。在这种情况下,我无法理解如何编写 CRUD 操作?


如果我像往常一样处理所有查询:


func RunFindAllQuery(document interface{}, m bson.M, mongoSession *mgo.Session, conn Conn) (err error) {

sessionCopy := mongoSession.Copy()

defer sessionCopy.Close()

collection:= sessionCopy.DB(conn.Database).C(conn.Collection)   

err = collection.Find(m).All(document)

if err != nil {

    log.Printf("RunQuery : ERROR : %s\n", err)

}

   return err

}

我需要定义很多类型:鞋子!= 汽车。


type Shoes struct {

    Id             bson.ObjectId `bson:"_id"`

    Name           string        `bson:"name"`

    Description    string        `bson:"descriprion"`

    Size           float         `bson:"size"`

    Color          float         `bson:"color"`

    Type           float         `bson:"type"`

    ShoeHeight     float         `bson:"shoeheight"`

    PlatformHeight float         `bson:"platformheight"`

    Country        float         `bson:"country"`

}

type Car struct {

    Id          bson.ObjectId `bson:"_id"`

    Name        string        `bson:"name"`

    Model       CarModel      `bson:"name"`

    Description string        `bson:"descriprion"`

    Color       float         `bson:"color"`

    Height      float         `bson:"height"`

    Fueltype    string        `bson:"fueltype"`

    Country     float         `bson:"country"`

}

我的代码将被复制粘贴:


var carobjFindAll []Car

m := bson.M{"description": "description"}

_ = RunFindAllQuery(&carobjFindAll, m, mongoSession, conn)

for cur := range carobjFindAll {

    fmt.Printf("\nId: %s\n", carobjFindAll[cur].Id)

    fmt.Printf("\nColor: %s\n", carobjFindAll[cur].Color)

}

var shoesobjFindAll []Shoes

m_shoes := bson.M{"description": "shoes_description"}

_ = RunFindAllQuery(&shoesobjFindAll, m_shoes, mongoSession, conn)

for cur_shoe := range shoesobjFindAll {

    fmt.Printf("\nId: %s\n", shoesobjFindAll[cur_shoe].Id)

    fmt.Printf("\nColor: %s\n", shoesobjFindAll[cur_shoe].Color)

}

PS:对不起我的英语


开心每一天1111
浏览 208回答 1
1回答

慕码人2483693

我不是 MongoDB 专家,但这是我的看法:由于您有很多类别,因此您不必为每种类型编写结构体,因为它既繁琐又不可靠。相反,您应该直接使用bson.M类型,它基本上是map[string]interface{}类型的别名。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go