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

如何向数据库中插入多个值

如何向数据库中插入多个值

Go
白衣非少年 2023-06-12 16:50:26
在我的 Go 应用程序中,我有这样的路线:router.HandleFunc("/api/users_groups_relationship/{user_id:[0-9]+}", controllers.CreateUsersGroupsRelationship).Methods("POST")我发出POST请求。在该请求的正文中,我发送了如下所示的 JSON:{     "groups": [1, 2, 3]      }如您所见,groups键具有 id 数组作为值。用户可以在多个组中。我正在尝试将多个值插入到 PostgreSQL 数据库中。如何获取请求正文中特定键的值?还有其他最好的方法可以通过 Go 在数据库中插入多个值吗?我的代码:var CreateUsersGroupsRelationship  = func(responseWriter http.ResponseWriter, request *http.Request) {    vars := mux.Vars(request)    userID := vars["user_id"]    fmt.Println(userID)    var groups []int    groups = request.Body("groups") // ???    for i := 1; i < len(groups); i++ {        fmt.Println(groups[i])        _, _ := database.DBSQL.Exec("INSERT INTO users_groups (user_id, group_id) VALUES ($1, $2);", userID, groups[i])    }    utils.ResponseWithSuccess(responseWriter, http.StatusOK, "All new records successfully created.")}
查看完整描述

1 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

您可以为 Request 对象定义一个结构,然后将 JSON 解组到其中。


package main


import (

    "fmt"

    "github.com/gorilla/mux"

    "net/http"

    "encoding/json"

)


//Request is our request body.

type Request struct {

    Groups []int `json:"groups"`

}


//JsonTest1 is the http handler.

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

    req := new(Request)

    //decode request to struct.

    if err := json.NewDecoder(r.Body).Decode(&req); err != nil{

        w.WriteHeader(400) //bad request

    }


    w.WriteHeader(200)

    b, _ := json.Marshal(req)

    w.Write(b)

    w.Header().Set("Content-Type", "application/json; charset=utf-8")

}


func main(){

    fmt.Printf("starting backend server\n")


    root := mux.NewRouter()

    root.HandleFunc("/foo", JsonTest1)


    webServer := &http.Server{Addr: ":4000", Handler: root}


    webServer.ListenAndServe()

}

如果您的主体非常通用,您也可以解组为 map[string]interface{}。


试试


curl -XPOST -d '{"groups": [1]}' http://localhost:4000/foo


查看完整回答
反对 回复 2023-06-12
  • 1 回答
  • 0 关注
  • 144 浏览
慕课专栏
更多

添加回答

举报

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