🍆
Node.jsからSupabaseにINSERTしたりSELECTしたい
スクレイピングなどをしていると、Node.jsでファイル実行して、その結果をSupabaseにINSERTしたり、データを呼び出したいこともあるかと思います。
それを実現するまでの流れを備忘録として残しておきます。
※この記事ではNode.jsでTypeScriptファイルをts-nodeで実行しています。
0.必要なものをインストールする
- 【必須】supabase/supabase-js( Supabaseのデータのやり取りを行うため使用。 )
- 【ほぼ必須】dotenv( 環境変数を呼び出すため使用。 )
- 【任意】Supabase CLIで生成した型データ( https://supabase.com/docs/reference/cli/supabase-gen-types-typescript )
1.環境変数ファイルを設定する
ルートディレクトリに .env
ファイルを作成し、下記のような形で環境変数を設定します。
.env
SUPABASE_URL=http://127.0.0.1:54321
SUPABASE_ANON_KEY=【ここにanon_key】
上記はご自身の環境に応じて変更してください。
SUPABASE_URL
はご自身のSupabase APIのURLを指定。
SUPABASE_ANON_KEY
はご自身のanon keyを指定。
2. 再利用可能なSupabaseのクライアントを作成する
src/hooks/useSupabase.ts
など、任意の名前でファイルを作成します。
これを用意しておくと型定義ファイルや環境変数の指定など、何度も何度もする必要がなくなって便利です。
src/hooks/useSupabase.ts
// 環境変数を適用する
import "dotenv/config";
import { createClient } from "@supabase/supabase-js";
// Supabase CLIで生成したTypeScript型を呼び出す
import type { Database } from "src/types/supabase-schema";
export const useSupabase = () => {
if (!process.env.SUPABASE_URL || !process.env.SUPABASE_ANON_KEY) {
throw new Error("Supbase環境変数の設定に問題がある可能性が高いです。");
}
// 環境変数や型ファイルを適用したクライアントを作成
const supabase = createClient<Database>(process.env.SUPABASE_URL, process.env.SUPABASE_ANON_KEY, {
auth: {
persistSession: false,
autoRefreshToken: false,
},
});
return { supabase };
};
3. Node.jsからSupabaseのデータを呼び出してみる
これで準備は整いましたので、実際にSupabaseからデータを呼び出してみましょう!
workers/index.ts
import { useSupabase } from "src/hooks/useSupabase";
(async () => {
const { supabase } = useSupabase();
const { data, error } = await supabase.from("addresses").select(`prefecture,city,town,chome`).eq("postalcode", "5440033");
console.log(data, error);
})();
from
や select
の値はご自身の環境に応じて変更してください。
上記の例では郵便番号を元に都道府県・市区町村・町域・丁目を呼び出しています。
無事に結果が返ってきました!
もしも error の方に何らかのデータが出てくるようであれば、記述やDBのRLS設定に問題があるかもしれません。(RLSはテスト的にSELECTの呼び出しをtrueにしておくと混乱しにくいでしょう。)
Discussion