Open7
Supabaseお試し

Supabaseのローカル開発環境ではsupabase start
時に出てくるAPI URLとanon keyを使う必要がある。
今回はNuxtを使っていたので、API URLとanon keyを.env.local
ファイルに書いてdevサーバーの起動時に--dotenv .env.local
とオプションを渡す必要がある。

supabase.auth.signInWithPassword
でログインする際には、ログイン成功時にリダイレクトさせることがsupabase側の仕組みとしてなさそう。

初めてsupabase start
したときに以下のようなエラーが出た。supabaseもdockerも再起動しても治らなくて、ChatGPTにきいて解決した。
failed to create docker container: Error response from daemon: Conflict. The container name "/supabase_vector_foo" is already in use by container "...". You have to remove (or rename) that container to be able to reuse that name.
エラーの内容としてはコンテナの名前が被ったということだが、このとき他にコンテナはなかったのでよくわからなかった。
$ docker rm 4a999b6dade6
Error response from daemon: No such container: ...
結局Dockerのキャッシュをクリアすることで解決した。
$ docker system prune -f
Dockerも素人なので結局原因はわからない。

型情報の生成
$ supabase gen types --lang=typescript --local > database.types.ts
$ supabase gen types --lang=typescript --project-id "$PROJECT_REF" --schema public > database.types.ts

SupabaseというよりNext.jsの話だが。
Vercelへデプロイするときに環境変数の設定を忘れていた。SupbaseのProject URLとAPI KeyをNEXT_PUBLIC_
付きの環境変数で設定していたた。NEXT_PUBLIC_
付きの環境変数はインライン展開されるため、Vercelの設定であとから追加しても再ビルドするまで反映されない。

supabase_vector_project container is not ready: unhealthy
別のパソコンで作業を行おうとしたときにエラーが出た。
analyticsを使わないならconfig.tomlでenable = false
をするのが簡単な対処法。

値がNullのものを絞り込むにはeq
ではなくis
を使う。
const { data, error } = await supabase
.from("posts")
.select()
.is("title", null)