shimotsu tech

Webフロントエンドエンジニア @ to-R inc.

TypeScript

Supabase の supabase.auth.api.setAuthCookie() での Cookie の保存について

Supabase では、認証状態の変更などに応じてトークンを Cookie にセットするためのメソッド supabase.auth.api.setAuthCookie(req: any, res: any): void が用意されています(厳密には、 GoTrue API を利用している)。 例えば、supabase.auth.onAuthStateC…

Zod で空文字列を表現する

最近作っているアプリケーションで使っている Zod で、バリデーションに空文字列を指定する必要があったのでその方法をメモしておきます。 github.com 結論 結論から述べると、以下の書き方で実現できました。 const schema = z.object({, name: z.string().…

Supabase のDBからデータを取得する際、ネストされた子レコードの order を指定する

Supabase のDBからデータを取得する際に、ネストされた子レコードの order を指定する方法でちょっと躓いたのでメモがてら書いておきます。 前提 まず、前提として以下の posts テーブルと items テーブルがあると仮定します。ここで、items テーブルの post…

React Hook Form の setFocus() 時に "TypeError: Cannot read properties of undefined (reading '_f')" のエラーが出る

React Hook Form を使ったフォームの実装において、フォームの任意の要素にフォーカスを当てる setFocus() メソッドの実行時に TypeError: Cannot read properties of undefined (reading '_f') のエラーが出てしまうことがありました。 useForm - setFocus …

Supabase のデータ取得の際に、任意のプロパティで複数の条件に合致するレコードを取得したい

Supabase の DB からデータを取得する際に、少し凝ったフィルタリングの実装に悩んだのでメモがてら書いておきます。 通常 supabase.from() メソッドでデータを取得する際、通常は以下のように eq() メソッドを繋ぎ、条件を指定します。この例では、posts テ…

props の値を評価して表示するかどうか決定する <Maybe> コンポーネント

「next-realworld-example-app」のコードを読み込んでいて参考になる箇所があったのでメモしておきます。 ごくシンプルなユーティリティ系のコンポーネント <Maybe> です。 props に表示の可否を決定するための値 test を渡し、その値の如何によって表示を制御しま</maybe>…

SupabaseのJavaScriptクライアントでテーブル結合を行う

Supabase の JavaScript クライアントでテーブル結合を行う方法をメモ。 www.npmjs.com テーブルが以下のようにあるとします。ユーザーに紐づく投稿画像があり、その画像に対してコメントが付くようなイメージです。 # ユーザー users: id: string fullname:…

Supabase の storage から getPublicUrl() した値が404になる問題

Supabase では storage にアップロードしたリソースのパブリックなURLを取得するメソッド getPublicUrl() が用意されているのですが、このメソッドを使って取得した値が 404 になるケースに遭遇しました。 export const removeBucketPath = (key: string, bu…

【TypeScript】Arrow Functions で Generics を使う方法

TypeScript でアロー関数(Arrow Functions)を書く際に、Generics を使おうとすると、素直に書いた場合うまくコンパイルされない場合があります。 例えば、以下のような T型 の値を引数に取り、そのまま引数を return する関数があるとします。 const ident…