質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

structure

このタグは、プログラム言語におけるデータ型structure(構造体)に関するタグです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

1回答

1709閲覧

データをアップデートしたい。

退会済みユーザー

退会済みユーザー

総合スコア0

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

structure

このタグは、プログラム言語におけるデータ型structure(構造体)に関するタグです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2016/09/26 07:27

編集2022/01/12 10:55

DBから取ってきた値をjson形式で、ストラクトにマップし、それを別のストラクトにアサインした後にアップデート(変更)を加え、またストラクトにマップしたいと思っているのですが、手法が浮かばず悩んでいいます。
この方法をとらないといけないです。(訳ありです(割愛))

早急です。

どなたかわかるかたいたら教えてください。

例文コードになりますが、動くかは検証していません。おそらくお動きません.
こんな感じのことがしたいということだけ読み取っていただけたらと思います。
少しでも情報があれば提供してくださると助かります。

type Post struct{ Id: int64 `db:"id" json:"id"` UserId: int64 `db:"userid" json:"userid"` Title: string `db:"title" json:"title"` Content: string `db:"content" json:"content"` DeletedAt: *time.Time `db:"deleted_at" json:"deltedAt"` CreatedAt: *time.Time `db:"created_at" json:"createdAt"` UpdatedAt: *time.Time `db:"updated_at" json:"updatedAt"` }

jsonで取ってきた値のストラクト

1type PostView struct{ 2Id: int64 ` json:"id"` 3UserId: int64 ` json:"userid"` 4Title: string ` json:"title"` 5Content: string ` json:"content"` 6DeletedAt: *time.Time `json:"deltedAt"` 7CreatedAt: *time.Time `json:"createdAt"` 8UpdatedAt: *time.Time ` json:"updatedAt"`
type PostRequestBody struct{ Title: string Content: string }
func(p *PostRequestBoby)FieldMap(req *http.Request) binding.FieldMap{ return binding.FieldMap{ &p.Title: "title", &p.Content: "content", } }
func UpdatePost(w http.ResponseWriter, req *http.Request, ps httprouter.Params) { userId, err := strconv.ParseInt(ps.ByName("userId"), 10, 0) helpers.CheckErr(err, "Invalid userId") postId, err = strconv.ParseInt(ps.ByName("postId"), 10, 0) helpers.CheckErr(err, "Invalid postId") user := models.GetUser(userId) switch user.GroupeId { case 1: p := models.GetPost(postId) //リクエストで取ってきた記事がストラクトとして取得できる //でもbindingしていないから以降ではエラーが発生する //取得した値をRequestBodyに当てはめbindingを成立させ、変更を以下の変更を行いたい //p := new(models.PostRequestBody) errs := binding.Bind(req, p) if errs.Len() > 0 { log.Println(errs) R.JSON(w, 422, errs) return } post := models.Post{ Title: p.title, Content: p.content, } R.JSON(w, httpStatusOK, models.UpdatePost(post)) }

UpdatePost

1func UpdatePost(post Post) Post { 2 trans, err := DbMap.Begin() 3 helpers.CheckErr(err, "Start new transaction failed") 4 5 now := time.Now() 6 post.UpdatedAt = &now 7 8 _, err = trans.Update(&post) 9 CheckTransErr(trans, err, "Update post failed") 10 11 err = trans.Commit() 12 CheckTransErr(trans, err, "Commit transaction failed") 13 14 return post 15}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

こちらと同じ質問かと思いましたのでリンクを貼っておきます。

https://teratail.com/questions/49437

投稿2017/06/23 11:20

mattn

総合スコア5030

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問