GoのWebアプリ開発での DB関連トラブル

D7bdc8a7ccee78c64ca96e0ed4a7b070?s=47 Go Sagawa
October 28, 2019

GoのWebアプリ開発での DB関連トラブル

D7bdc8a7ccee78c64ca96e0ed4a7b070?s=128

Go Sagawa

October 28, 2019
Tweet

Transcript

  1. 8.

    トラブル2 xo 作成された構造体がそのまま使えない 2. goose, xo • RDBに依存した型を利用したくない ◦ Mysql.xxx,sql.xxx等

    ◦ 将来的にRDB以外を利用することも 見据えて • Nullが入るカラムはポインタ型にしたい ◦ Gormで利用するときの兼ね合い • 作成された構造体以外使わない ◦ importもいらない ◦ 不要な関数も多いし、シンプルにするた め
  2. 16.

    トラブル4 Updateされるはずなのにされない 3. gorm • 基本的に構造体で扱う。 mapは利用しない。 • カラム指定で更新したいケースかつ null値やゼロ値を考慮しなくて良い場合は

    Updateを使う。それ以外 の場合はSaveを使う • 新規データを作成するのには Createを利用し、Saveを利用しない • 新規作成、なければ新規作成、更新の3ケースを明確に分ける。いずれも必ず findを先に実行してチェッ クし、新規で既にデータがある場合、更新のみで更新データがない場合はエラーにする。 • DB構造でも、フラグ等連番管理する場合は問題を避けるため 1始まりにする。実質boolのデータでも 0: 未設定、1:False、2:trueとしたりする。 ◦ Iotaを+1して使うのと同じようなポリシー