beego项目中使用mongodb存储提交任务

在用beego开发运维相关项目时,需要存储一些文档类型数据,此时用mysql没有mongodb来的方便;
代码记录如下

type DeploymentText struct {
    
    Title string
    DateTime string
    Content string
    DeploymentStep []string
    SqlDbname []SqlPlan
}

type SqlPlan map[string][]string

mongodb插入文档代码如下;

func (c *OpsController) AddDeploymentItem() {
    onlineTitle := c.GetString("onlineTitle")
    onlineContent := c.GetString("onlineContent")
    onlineItems := strings.Split(c.GetString("onlineItems"),",")
    onlineDbname := c.GetString("onlineDbname")
    var onlineSqlStatement []string
    tmpsqlslice := strings.Split(c.GetString("onlineSqlStatement"),";")
    for _,tmpsql := range tmpsqlslice {
        if strings.TrimSpace(tmpsql) != "" {
            onlineSqlStatement = append(onlineSqlStatement,strings.TrimSpace(tmpsql))
        }
    }

    mongoServer := beego.AppConfig.String("mongodb_endpoint")
    mongoSession,err := mgo.Dial(mongoServer)

    if err != nil {
        panic(err)
    }
    defer mongoSession.Close()
    mongoSession.SetMode(mgo.Monotonic, true)

    var sqlstatement SqlPlan
    if len(onlineSqlStatement) < 1 {
    } else {
        sqlstatement = SqlPlan{onlineDbname:onlineSqlStatement}
    }
    var job DeploymentText

    if sqlstatement == nil {
        job = DeploymentText{
            Title: onlineTitle,
            DateTime: time.Now().Format("2006-01-02 15:04"),
            Content: onlineContent,
            DeploymentStep: onlineItems,
        }
    } else {
        job = DeploymentText{
            Title: onlineTitle,
            DateTime: time.Now().Format("2006-01-02 15:04"),
            Content: onlineContent,
            DeploymentStep: onlineItems,
            SqlDbname: []SqlPlan{sqlstatement},
        }
    }
    
    jobToMongodb := mongoSession.DB(beego.AppConfig.String("mongodb_db")).C(beego.AppConfig.String("mongodb_table"))

    err = jobToMongodb.Insert(&job)
    if err != nil {
        //log.Fatal(err)
    }

    result := struct {
        Status string
    }{"ok"}
    c.Data["json"] = &result
    c.ServeJSON()

}

mongodb读取数据

func (c *OpsController) GetItemPlan() {
    jobtime := c.GetString("lastjobtime")

    mongoServer := beego.AppConfig.String("mongodb_endpoint")
    mongoSession,err := mgo.Dial(mongoServer)

    if err != nil {
        panic(err)
    }
    defer mongoSession.Close()
    mongoSession.SetMode(mgo.Monotonic, true)



    getJobFromMongodb := mongoSession.DB(beego.AppConfig.String("mongodb_db")).C(beego.AppConfig.String("mongodb_table"))

    result := DeploymentText{}
    err = getJobFromMongodb.Find(bson.M{"datetime":jobtime}).One(&result)
    if err != nil {
        //log.Fatal(err)
    }
    c.Data["json"] = &result
    c.ServeJSON()
}

前端页面数据展示如下:

《beego项目中使用mongodb存储提交任务》 image.png
《beego项目中使用mongodb存储提交任务》 image.png

    原文作者:苏州运维开发
    原文地址: https://www.jianshu.com/p/e4041df8c98b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞