【问题标题】:How will we entered the data according to the number of result and also according the count field?我们将如何根据结果数量和计数字段输入数据?
【发布时间】:2018-07-13 15:25:51
【问题描述】:

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

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

这些数据将使用 struct:-

进行排列
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 value 1 之后左边的记录将保留在那里计数值0,1,0 然后 那些有count字段值超过0的记录,他们将在addition_spot中保存count value的次数。我使用的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) 
    }
 }
}

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

【问题讨论】:

    标签: mongodb go


    【解决方案1】:

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

    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)
            }       
        }
     }
    } 
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      • 2016-03-16
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      • 2023-01-17
      • 1970-01-01
      相关资源
      最近更新 更多