亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用戶的 Golang、mgo 更新詳細信息

用戶的 Golang、mgo 更新詳細信息

Go
Cats萌萌 2021-11-29 16:53:27
我在更新 mongodatabase 上的用戶時遇到了一些麻煩?;旧衔蚁胪ㄟ^用戶名選擇用戶而不是編輯其詳細信息。我正在使用 Gorilla Mux 和 mgo 連接 MongoDB。這是代碼:func ViewUserHandler(w http.ResponseWriter, r *http.Request) {    vars := mux.Vars(r)    username := vars["username"]    session, err := mgo.Dial("mongodb://DATABASE_URL")    if err != nil {        panic(err)    }    defer session.Close()    session.SetMode(mgo.Monotonic, true)    c := session.DB("studnet").C("user")    result := Person{}    // get the user_id using a hidden field when clicked using javascript    err = c.Find(bson.M{"name": username}).One(&result)    if err != nil {        log.Fatal(err)    }    if r.Method == "GET" {        t, _ := template.ParseFiles("profile.html")        t.Execute(w, result)    }    // update the user profile details    if r.Method == "POST" {        r.ParseForm()        // TODO : update the user        selectedUser := bson.M{"name": username}        updatedUser := bson.M{"$set": bson.M{            "Name":      r.Form["username"][0],            "Gender":    r.Form["gender"][0],            "Age":       r.Form["age"][0],            "CreatedAt": time.Now(),        }}        err = c.Update(selectedUser, updatedUser)        if err != nil {            panic(err)        }        http.Redirect(w, r, "/view/"+username, 301)    }}
查看完整描述

2 回答

?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

好吧,我至少看到了一個問題,那就是區分大小寫的查詢。因此,如果您的結構在 json 中使用小寫鍵,則必須使用小寫鍵。


// This shoud match 

// against the "Name" property

selectedUser := bson.M{"Name": username}


updatedUser := bson.M{"$set": bson.M{

                "Name":      r.Form["username"][0],

                "Gender":    r.Form["gender"][0],

                "Age":       r.Form["age"][0],

                "CreatedAt": time.Now(),

 }}


查看完整回答
反對 回復 2021-11-29
?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

data := model.Data {

            Name:      r.Form["username"][0],

            Gender:    r.Form["gender"][0],

            Age:       r.Form["age"][0],

            CreatedAt:  time.Now(),

        }


selectedUser := bson.M{"name": username}

updatedUser := bson.M{"$push": bson.M{"user": bson.M{"$each": []model.User{data}}}}

err = c.Update(selectedUser, updatedUser)

這將根據匹配的用戶名更新用戶數組。如果您也可以共享該結構,那就太好了。我已經回答了假設。


查看完整回答
反對 回復 2021-11-29
  • 2 回答
  • 0 關注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號