如何将数据从控制器传递到 go lang 中的表单?

我有一个接受 http 请求的处理程序/控制器。


func UpdateHandler(request *http.Request) {

    ID := mux.Vars(request)["ID"]

    UpdateForm.Save(ID,db)

}

然后我有一个表单,我想处理数据并最终更新它。


type UpdateForm struct {

    ID              string            `json:"type"`

}


func (UpdateForm) Save(db mongo.Database) {

    id := ID

    repository.Update(Id)

}

Go 会打印出来 undefined ID


如何确保表单从控制器获取值?


蝴蝶不菲
浏览 154回答 2
2回答

qq_花开花谢_0

您可以使用请求中的数据填充表单。如果您的请求包含一个 JSON 编码的正文,那么您可以将其解码为您的表单对象,如下所示:package mainimport (    "encoding/json"    "net/http"    "strings"    "fmt")type UpdateForm struct {    ID string `json:"type"`}func main() {    req, _ := http.NewRequest(        "POST",        "http://example.com",        strings.NewReader(`{"type": "foo"}`),    )    var form *UpdateForm    json.NewDecoder(req.Body).Decode(&form)    fmt.Println(form.ID) // Output: foo}或者你可以像这样直接实例化它:func UpdateHandler(request *http.Request) {    ID := mux.Vars(request)["ID"]    form := &UpdateForm{ID: ID}    form.Save()}

幕布斯6054654

我认为这与处理程序无关,但您的代码不一致。这条线UpdateForm.Save(ID,db)该方法Save()接受两个参数,而原始方法签名仅接受一个mongo.Database类型参数。这是我假设你的意图:type UpdateForm struct {    ID     string   `json:"type"`}func (u UpdateForm) Save(db mongo.Database) {    id := u.ID    repository.Update(id)}// UpdateForm instance somewherevar u = UpdateForm{}func UpdateHandler(request *http.Request) {    u.ID := mux.Vars(request)["ID"]    u.Save(db)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go