为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
蝴蝶不菲 2021-11-22 15:56:13
我有一个接受 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如何确保表单从控制器获取值?
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

您可以使用请求中的数据填充表单。如果您的请求包含一个 JSON 编码的正文,那么您可以将其解码为您的表单对象,如下所示:


package main


import (

    "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()

}


查看完整回答
反对 回复 2021-11-22
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

我认为这与处理程序无关,但您的代码不一致。这条线


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 somewhere

var u = UpdateForm{}


func UpdateHandler(request *http.Request) {

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

    u.Save(db)

}


查看完整回答
反对 回复 2021-11-22
  • 2 回答
  • 0 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信