Go言語入門 Twitter風のWebアプリを作ろう(DBで値の保存・取り出しをしよう編)

GOsamune4

こんにちは、SDです。

今日はGo言語でTwitterみたいなアプリを作る連載第3弾を行っていこうかと思います。

そろそろ大詰めですね。
今回はDBを扱います。

バックエンドといったらDBの操作ですよね。

今回はなかなかの記述量となりますが、
この連載のキモとなるので頑張っていこうかと思います。

 

DBとORMの選定

今回は僕が慣れているからという理由でMySQLを使います。

Cloud9でのMySQLの使い方は下記サイトなどを参考にしてみてください。

AWS Cloud9でMySQLを利用する方法

また、ORMとしてはgormを採用します。

これも何故かというと、僕がgormしか使ったことがないからです。

・・・というわけでこちらも下記の方が非常に詳しくまとめられています。

ご参考にすることを強くお勧めします。

GOのORMを分かりやすくまとめてみた – Qiita

また、よく言われるように公式ドキュメントは読むべきだと思います。

(幸い日本語化されています)

GORM(JP)

 

Gormのインストール

go get -u github.com/jinzhu/gorm

これでお願いします。

コードを編集する

main.goを編集していきます。

 

細かいコードの説明はコメントをご覧ください。  

DBへの接続

gormでのDBの接続はほぼ以下の書式で行われます。

db, err := gorm.Open(“mysql”, “[ユーザー名]:@[ホスト名]/[DB名]?parseTime=true”)
if err != nil {
    panic(“You can’t open DB (dbGetAll())”)
} defer db.Close()

今回の注意点としては、?parseTime=trueです。

MySQLの場合は文字コードだかの関係で、これを付けないと現状接続できません。

(他のDBの場合は付けなくてOKでした)

defer db.Close()に関しては、DBとのコネクションを切る処理ですが、

いつ呼び出すかどうかは明確には決まっていないようです。

基本的にはメソッドの終わり際に書いてあることが多い印象ですが、

結構人によってまちまちだったりするので、詳細がわかったら追記したいと思います。

HTMLの編集

さて、次はViewを作っていきたいと思います。  

こんな感じになります。

({{range}}はループを表します。ドットで要素にアクセスでき、 endで終了します。)

実行

やっとこさ実行してみます。

go run main.go

コンソールで

[GIN-debug] Listening and serving HTTP on :8080

のような表示が出ていれば無事に成功しています。

それではブラウザでlocalhostを表示してみます。

 

Goindex

 

上みたいのが出ていると思います。

 

TESTGO

 

それでは、念願の初つぶやきを行います!

 

TESTGO2

 

つぶやけましたね。

 

DBの方も確認してみます。

 

TESTGO3

 

DBにデータが保存されているのを確認できました。

(GORMでは特に指定しない場合でもid, created_at, updated_at, deleted_atテーブルらが作成されます)

 

終わりに

おめでとうございます!

これにてTwitterみたいなアプリを作ろう講座は終わりです。

お疲れ様でした!

 

・・・え?これじゃあ超絶劣化メモ帳じゃないかって?

という強迫観念を感じたので、次回はこれらをベースに機能の拡張を図りたいと思います。

それではお楽しみに~

Share on Facebook0Tweet about this on TwitterShare on Google+0Email this to someone