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

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

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

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

0回答

318閲覧

ReactからGoにPostした際に型が違うのでMySQLにデータを保存できないので解決したいです。

hiroki17

総合スコア4

Go

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

1クリップ

投稿2023/01/29 03:23

前提

Reactからname,ageの情報を"/users_new"でリクエストを飛ばし、Goにデータを送信しMySQLのusersテーブルにデータを保存したいが、ageの型が違うのでMySQLにデータを保存できないので解決したい
Number(data.age)を使うことでnumber型に変化させデータベースに保存できたがこれ以外の方法ありますでしょうか?

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • React側からPostした際にageカラムをnumber型に変えた
  • MySQLにデータを保存したい

発生している問題・エラーメッセージ

MySQLのageカラムが空のままになっている
(一旦保存処理を実現したいのでnull false制約はかけてません)

該当のソースコード

React 保存処理 const onSubmit = async (data: UserForm) => { Number(data.age); await axios.post(`http://localhost:8080/users_new`, data).then( function (response) { console.log(response); }, function (error) { console.log(error); } ); console.log(data); }; return ( <> <h3>フォーム送信</h3> <Controller control={control} name="name" render={({ field }) => ( <> <FormControl> <FormLabel>名前</FormLabel> <Input {...field} /> </FormControl> </> )} /> <Controller control={control} name="age" render={({ field }) => ( <> <FormControl> <FormLabel>年齢</FormLabel> <Input {...field} /> </FormControl> </> )} /> <Button onClick={handleSubmit(onSubmit)}>登録</Button>
型定義 export interface UserType { id: number; name: string; age: number; } export type UserForm = Pick<UserType, "name" | "age">;
Go MySQLに保存処理 func (a *application) PostUser(w http.ResponseWriter, r *http.Request) { var user UserNew json.NewDecoder(r.Body).Decode(&user) name := user.NAME age := user.AGE db := database.Connect() defer db.Close() stmt, err := db.Prepare("INSERT INTO users(name, age) VALUES(?,?)") if err != nil { log.Fatal(err) } res, _ := stmt.Exec(name, age) fmt.Println(res) }
データベース接続処理 package database import ( "database/sql" "errors" "fmt" "log" _ "github.com/go-sql-driver/mysql" ) type User struct { ID int FirstName string LastName string Age string } type Tweet struct { ID int } func Connect() *sql.DB { user := "webuser" password := "webpass" host := "localhost" port := "3307" database_name := "go_mysql8_development" dbconf := user + ":" + password + "@tcp(" + host + ":" + port + ")/" + database_name + "?charset=utf8mb4" db, err := sql.Open("mysql", dbconf) if err != nil { fmt.Println(err.Error()) } return db }

試したこと

  • React側で Number(data.age)で数値型変換
  • Go側で数値型変換
age, err := strconv.Atoi(age) if err != nil { // handle the error } をするとageはすでにint型に設定されているから変換できない?

すみませんご指導お願い致しますm(_ _)m

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

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

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

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

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

maisumakun

2023/01/29 03:44

どこでどの値がどの型なのか、動作させてチェックは進めてみましたか?
yuma.inaura

2023/01/29 05:25

ここのAge stringって何でしょうか type User struct { ID int FirstName string LastName string Age string }
hoshi-takanori

2023/01/29 20:37

Number(data.age) って変換した結果を使ってないような…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.53%

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

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

質問する

関連した質問