ファランクス by ponta

Supabase : 基礎

必要なもの

  • ` npm install @supabase/supabase-js `
  • Project URL / Anon Key

例:ベース

supabase.js

import { createClient } from "@supabase/supabase-js";

export const supabase = createClient(
  process.env.NEXT_PUBLIC_SUPABASE_URL,
  process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY
);

page.jsx

"use client";
import { useEffect, useState } from "react";
import { supabase } from "@/src/lib/supabase";

const App = () => {
  const [countries, setCountries] = useState([]);

  useEffect(() => {
    getCountries();
  }, []);

  async function getCountries() {
    const { data } = await supabase.from("countries").select();
    setCountries(data);
  }

  return (
    <ul>
      {countries.map((country) => (
        <li key={country.name}>{country.name}</li>
      ))}
    </ul>
  );
};

export default App;
  • "countries"の部分をテーブル名ごとに変える
  • map内はテーブルで使っていない要素を書くと表示されなくなる

Docs:https://supabase.com/docs/guides/getting-started/quickstarts/reactjs

上手くいかない場合 :

上記Docsの手順で上手くいかない場合は URL or AnonKey が間違っていることが多い

基本形

select :

import { supabase } from "@/src/lib/supabase";
---
const { data, error } = await supabase
        .from("")
        .select("*");

delete :

const { error } = await supabase
          .from("")
          .delete()
          .eq("id", selectedItemId);

"id" この部分が対象の要素

insert :

const { data, error } = await supabase
      .from("")
      .insert([{ title, link, password }]);

id は自動で付与?

Storage

例:画像のUP

const handleImageUpload = async (e) => {
    const file = e.target.files[0];
    // Supabase Storageに画像をアップロード
    const { data, error } = await supabase.storage
      .from("test") // Storage名
      .upload(`images/${file.name}`, file); //Up先
<div className="h-44 bg-green-100">
        <input type="file" onChange={handleImageUpload} />
</div>
  • UP出来ない場合は policy を決めていない場合

日付

最初は日付を使う目的が無くても、createdAt等を最初から作っておいた方がいい

後からソートできる

  • typeでtimestampz、defaulvalueをnow()にする
  • 途中からcolを追加すると現在の時間に。仕方ない?

← Go home