Next.jsでsupabaseへ接続(公式ドキュメント解説)

目次

マーケター、エンジニアを月1時間からジョインできるプラットフォーム

airteamは月1時間からマーケターやエンジニアに相談できるプラットフォーム。 雇うのはハードル高いけどプロをチームに入れたい。そんな経営者のためのサービスです。 相談にのる方も募集しています。

タスクなしだから月一時間からジョイン可能

作業はなくオンライン相談メイン。 月1時間からさっと経験者に継続的に相談できます。

多様な経験者を雇用するより何倍も早くチームに

あらゆるジャンルの経験者がいるので あなたのチームのノウハウの選択肢が広がります。

NDAはすでに締結済み、契約もスムーズ

契約の煩雑なやりとりはなく、NDAはすでに締結済み、書面のやりとりはありません。

Next.jsでsupabaseにつなげる際の手順をまとめました。Next.jsの公式ドキュメントにもデータベースの設定があるのですが、ドキュメント通りだと難しいところがあるので、そこも補足します。

Next.js公式ドキュメント

https://nextjs.org/learn/dashboard-app/setting-up-your-database

2つの繋ぎ方

つなぎ方には下記2つがあるのですが、公式ドキュメントでは前者を進めています。ただ実運用をする上ではちゃんとsupabaseとVercelがどうつながるのかと言うことを理解したほうがいいと思うので、今回は校舎で説明していきます。

  • Vercelのインテグレーションボタン
  • supabaseとvercelを個別で設定し、環境変数で設定

前準備

  • supabaseのアカウント、プロジェクト作成
  • Vercelのアカウント作成

ライブラリインストール

npm install @supabase/supabase-js

上記でライブラリをnext.jpにインストール。

環境変数の設定

NEXT_PUBLIC_SUPABASE_URL=your_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key
POSTRES_URL:これはseedを入れる際に必要

上記の環境変数を設定します。POSTGRES_URLは直接DBを編集するためのもので、これはseedを入れる際に使います。

クライアント初期化

import { createClient } from '@supabase/supabase-js'

const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL
const supabaseKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY

if (!supabaseUrl) {
  throw new Error('Missing env.NEXT_PUBLIC_SUPABASE_URL')
}

if (!supabaseKey) {
  throw new Error('Missing env.NEXT_PUBLIC_SUPABASE_ANON_KEY')
}

export const supabase = createClient(supabaseUrl, supabaseKey)

このファイルは、Supabaseクライアントを初期化してエクスポートするモジュールです。

1. インポート文

escript
import { createClient } from ‘@supabase/supabase-js’
Supabase JavaScriptクライアントライブラリから createClient 関数をインポートしています。

2. 環境変数の取得

escript
const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL
const supabaseKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY- NEXT_PUBLIC_SUPABASE_URL: SupabaseプロジェクトのURL

  • NEXT_PUBLIC_SUPABASE_ANON_KEY: Supabaseの匿名(公開)キー

NEXT_PUBLIC_ というプレフィックスにより、Next.jsがこれらの環境変数をクライアント側でも利用可能にします。

3. 環境変数の検証

if (!supabaseUrl) {
throw new Error(‘Missing env.NEXT_PUBLIC_SUPABASE_URL’)
}

if (!supabaseKey) {
throw new Error(‘Missing env.NEXT_PUBLIC_SUPABASE_ANON_KEY’)
}環境変数が設定されていない場合、アプリケーションの起動時にエラーを投げて、問題を早期に発見できるようにしています。

4. Supabaseクライアントの作成とエクスポート

export const supabase = createClient(supabaseUrl, supabaseKey)取得したURLとキーを使用してSupabaseクライアントを作成し、他のモジュールから使用できるようにエクスポートしています。

seedする

  • placeholder-data.tsにシードデータがはいっている下記urlにアクセスするとDBにデータが入る
    • この時使用されるのはPOSTRES_URL。NEXT_PUBLIC_SUPABASE_URLは読み込み専用
  • pnpm run dev
  • http://localhost:3000/seedアクセス