ServerpodのDatabaseでミスった件(失敗学)
tutorialがうまくいったので
よし、自分の作りたい形でやってみよう、と思って、ずっとやってきた。
なんかいけそうな気がしていた。
けど、dataが拾えない。
endpointとprotocolを設定したら、そこからは基本自動生成なので、間違えようがない。
なのにclientErrorだという。そんなところ、自分では触っていない。
ということはFlutterからの呼び方がおかしいのか。
散々悩みまくって、ErrorLogとにらめっこの日々を過ごしたら、そもそも「そんなtableはありません」といわれているのに気づいた。ありませんって、ここにあるでしょうよ。テストデータも入ってるでしょうよ。苦労して作ったMainのtableも、中間tableも、全部「ない」ことになっている。
なんなんだこれ。
でも、tutorialで作ったProjectを走らせると、ちゃんと機能する。
この二つはどこが違うのか。
唯一、手動でやるところ
自動生成の部分がまちがっているとしたら、それは私には手の出しようのないbugだけれど、そんなissueはGitHubに上がっていないし、そもそもtutorial版はちゃんと動いているんだから、これは私のミスに違いない。
としたら、手動でやった部分だ。
Flutterのコードは目を皿にして見直したが、まちがってない(多分)。
あと可能性があるのは・・・そうだ、
serverpodで唯一、手動で設定する部分、PostgreSQLのtable作成だ。
なんでも自動でできるのに・・・
- serverpodでProjectを作ると、server、client、flutterと三つのフォルダができる
- docker-compose up --build --detach で 名前知らない何かが二つできる。
- Postico2からPostgreSQLにアクセスすると、三つの「タンク」ができている。
ここに手動でテーブルを作る。
といったって、serverにできているSQL文をコピペするだけなのだ。
それだけなのだが、さて、この三つのタンクのどこにコピペするか。
正解は一番左のプロジェクト名がついているタンク。いかにも当然。
tutorialではちゃんとそこにテーブルを作った。
が、次に自力で作ったとき、真ん中のタンクに作ってしまったのだ。
なんでそうなったか、わからない。postgresって書いてあるからかな。
・・・要するに迂闊なのだ。
いったんテーブルを作ってしまうと、次からはそこが自動で開くから、
次から次と新しいテーブルを作りつづけた・・・まちがったタンクに。
復習も兼ねて、一からやり直し。
この際、table構成も見直しながら、もう一度作り直すことにした。
だいぶスムーズに、読み込んでListTileで表示、まで来た。
さあ、これからまた、がんばろう。
Discussion