如何用字符串展开session.Value

如何用字符串展开session.Value,session,go,web,cookies,gorilla,Session,Go,Web,Cookies,Gorilla,Iam使用Gorilla/Sessions 我得到了一个模板页面,用户可以在其中选择不同的设备。 如果他在每个设备下使用一个提交按钮,我的控制器功能应将id值添加到我现有的会话值中 func Cart(w http.ResponseWriter, r *http.Request) { data := CartData{ Name: "Cart", Equipment: model.GetEquipment(model.Db), Pages:

Iam使用Gorilla/Sessions

我得到了一个模板页面,用户可以在其中选择不同的设备。 如果他在每个设备下使用一个提交按钮,我的控制器功能应将id值添加到我现有的会话值中

  func Cart(w   http.ResponseWriter,    r   *http.Request)  {   

data := CartData{ 
    Name: "Cart",
    Equipment: model.GetEquipment(model.Db),
    Pages: []Page{
        {
            Title: "Meine Geräte", 
            Active: false,
            Link: "/my-equipment",
        },
        {
            Title: "Equipment", 
            Active: false,
            Link: "/equipment",
        },
        {
            Title: "Logout",
            Active: false,
            Link: "/logout",
        },
    },

}

    equipment,_ := model.GetEquipmentByID(r.FormValue("id"))
    session, _ := store.Get(r, "cookie-name")

    Strings := strconv.Itoa(equipment.ID)
    fmt.Println(Strings)
    StringsWithComma := Strings + ","
    session.Values["EquipmentIDs"] = session.Values["EquipmentIDs"] + StringsWithComma // THIS CODE LINE DOES NOT WORK, I want to expand "EquipmentIDs" with the new ID

tmpl:= template.Must(template.ParseFiles("template/base_user.html", "template/cart.html"))
tmpl.ExecuteTemplate(w, "base", data)
}
}
示例:用户正在访问我的设备页面。他使用id=2的提交按钮 SessionValue[“EquipmentId”]现在应该为=“2”。 之后,用户再次访问设备页面,并使用id=6的提交按钮。 现在SessionValue应该是=“2,6”

我整天都在关注这个问题,不能再进一步了 如果您有问题或想查看我的代码的其他部分,请随时提问
提前感谢

我认为您应该从会话中获取原始设备值,合并用户单击的设备ID,并保存到会话中以备下次请求

我更新您的代码如下:

// ...
equipment, _ := model.GetEquipmentByID(r.FormValue("id"))
session, _ := store.Get(r, "cookie-name")

equipmentIdsStr := strconv.Itoa(equipment.ID)

if original, exist := session.Values["EquipmentIDs"]; exist {
    equipmentIdsStr = fmt.Sprintf("%v,%v", original, equipmentIdsStr)
}

session.Values["EquipmentIDs"] = equipmentIdsStr

//You have to save your updated session value
session.Save(r, w)
// ...

希望有帮助。

这可能看起来很愚蠢,但是
会话在哪里。保存(r,w)
行?是的,没错。这不是第410行中唯一的faultinvalid操作:original+“,”(接口()和字符串类型不匹配)。(EquipmentIDSSR=original+”,“+EquipmentIDSSR)将其更改为EquipmentIDSSR=original。(字符串)+“,”+EquipmentIDSSR。现在可以了,非常感谢much@ChristopherG1994谢谢我刚刚更新为使用
fmt.Sprintf
,以便更好地从
接口
转换为
字符串