登录
首页 >  Golang >  Go问答

我们如何根据结果数和计数字段输入数据?

来源:stackoverflow

时间:2024-04-30 16:06:37 206浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《我们如何根据结果数和计数字段输入数据?》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

通过使用 go api,我正在检索数组对象。如下所示:-

[
 {0 1 sunday 1 21600 25200 1} 
 {0 1 sunday 2 28800 32400 2} 
 {0 1 sunday 3 36000 39600 1}
]

此数据将使用结构排列:-

type providerspot struct {
 id         int    `json:"_id" bson:"_id"` 
 pid         int    `json:"pid" bson:"pid"`
 day        string `json:"day" bson:"day"`
 timeslug   int    `json:"time_slug" bson:"time_slug"`
 starttime   int64  `json:"start_time" bson:"start_time"`
 endtime        int64  `json:"end_time" bson:"end_time"`
 count      int    `json:"count" bson:"count"`
}
type providerspots []providerspot

在数组对象中看到,每个对象 1,2,1 中都有一个计数值,然后我必须存储此记录,就像那些具有 count 的记录一样,它们将仅存储在 available_spot 中一次,这意味着上面的记录将保存在集合中只有一次有 count 值 1,之后剩下的记录将保留在那里计数值 0,1,0 然后 那些 count 字段值大于 0 的记录,它们将在 addition_spot 中保存 count 值 的次数。我使用的golang代码是这样的:-

func SaveProviderSpot(c *gin.Context) {
 response := ResponseController{}
 values := c.PostForm("array")
 var err error
 byt := []byte(values)
 var result models.ProviderSpots
 if err = json.Unmarshal(byt, &result); err != nil{
    fmt.Println(err)
 }
 fmt.Println(result)
 for i := 0; i < len(result); i++ {
    lastValue :=result[i].Count-1
    if lastValue != -1 {
        providerspot.PId = result[i].PId
        providerspot.Day = result[i].Day
        providerspot.TimeSlug = result[i].TimeSlug
        providerspot.StartTime = result[i].StartTime
        providerspot.EndTime  = result[i].EndTime
        providerspot.Count = result[i].Count - lastValue

        id, _ := models.GetAutoIncrementCounter(config.ProvidersSpotsCounterId, config.ProvidersSpotsCollection)
        providerspot.Id = id
        fmt.Println("Here We go now :- ", &providerspot)
        err = models.AddProviderSpot(&providerspot) 
    }
 }
}

举一些可以解决这个问题的例子。感谢您在这个问题上花费宝贵的时间。


解决方案


我解决了这个问题的答案,但是谁能告诉我这是否适合我的代码:-

func SaveProviderSpot(c *gin.Context) {
 response := ResponseController{}
 values := c.PostForm("array")
 var err error
 byt := []byte(values)
 var result models.ProviderSpots
 if err = json.Unmarshal(byt, &result); err != nil{
    fmt.Println(err)
 }
 fmt.Println(result)
 for i := 0; i < len(result); i++ {
    for j := 1; j <= result[i].Count; j++ {
        // lastValue := result[i].Count-1
        // if lastValue != -1 {
        if j == 1{
            providerspot.PId = result[i].PId
            providerspot.Day = result[i].Day
            providerspot.TimeSlug = result[i].TimeSlug
            providerspot.StartTime = result[i].StartTime
            providerspot.EndTime  = result[i].EndTime
            providerspot.Count = 1//result[i].Count - lastValue

            id, _ := models.GetAutoIncrementCounter(config.ProvidersSpotsCounterId, config.ProvidersSpotsCollection)
            providerspot.Id = id
            fmt.Println("Here We go now :- ", &providerspot)
            err = models.AddProviderSpot(&providerspot) 
        }else{
            providerspot.PId = result[i].PId
            providerspot.Day = result[i].Day
            providerspot.TimeSlug = result[i].TimeSlug
            providerspot.StartTime = result[i].StartTime
            providerspot.EndTime  = result[i].EndTime
            providerspot.Count = 1//result[i].Count - lastValue

            id, _ := models.GetAutoIncrementCounter(config.AdditionalProviderCounterSpot, config.AdditionalProviderSpot)
            providerspot.Id = id
            err = models.AddAdditionalProviderSpot(&providerspot)
        }       
    }
 }
}

这确实是我想要的,但我很困惑它是否适合我。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《我们如何根据结果数和计数字段输入数据?》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>