LoginSignup
2
1

More than 3 years have passed since last update.

RDSにORM使ったけどモヤモヤが止まらないのでぜんぶ吐き出す!!!

Last updated at Posted at 2020-10-20

 転職活動でバックエンドも出来るぜ!アピールとしてポートフェリオぽいの作った方が良いかもね・・?という事で、こんなリポジトリ作ってたわけなんですけど、コード書いてて気づいた事つらつらと書きます。

 何時もの奔放な個人開発じゃなく、気づき、ハマりのQiitaらしいアウトプットってことで。ちゃんと調べて書けーって怒られそうな気もするけどw

ORMの仕様とか親切で大惨事になるかも・・?

 今回Goの代表的なORMであるgormを使いましたが、Delete投げる時に消す情報を先に取得しないまま、動かすとテーブル内のレコードすべてが消えるのが仕様らしいんです!

  jsonData.Id = Ids
  DBMS.First(&jsonData) // この行無いと滅亡です!
  DBMS.Delete(&jsonData)

今回一番作ってて?となったとこ。ありえん。

RDS?ORM?どっちが悪いでしょーか

 RDSが一時的に不調っぽい時に動かすとダンマリでタイムアウトせず・・

  DB, err := gorm.Open(DBTYPE, CONNECT) // ずーーっと接続中
  if err != nil {
    fmt.Println("RDS access error!")
    panic(err.Error())
  }

せめてエラー応答して欲しかったなと。

Model定義の順番で構造が崩れる!?

  type test struct {
    gorm.Model
    Number int `gorm:"primary_key"`
  }

 みたいに先にgorm.Modelを書いて、DB側のテーブルの最初にNumberが居るとgorm.Modelから取得した値がNumberに浸食してきます。

  type test struct {
    Number int `gorm:"primary_key"`
    gorm.Model
  }

こんなふうにDBスキーマにもよるけど最後に書いた方が無難。

残るモヤ

 と、まあ学びを通じて残るモヤがまだまだありました。。

APIサーバー自身もマネージドサービスの方が良くね?という疑問

ORM以前からDB叩いてきたバックエンドエンジニアにはどう映ってるの?という疑問

VSCodeとかエコシステムが逆に足引っ張ってねーかい?という疑問

 こういうアンチナレッジが残る事自体が学びなんでしょうけど、技術的な選定して舵を取るという意味でテックリードって大事なんやなと改めて思った。むしろテックリード不在の組織ってこういうのどうオトしてんだろ??

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1