supabase / auth-helpers

A collection of framework specific Auth utilities for working with Supabase.

Home Page:https://supabase.github.io/auth-helpers/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Custom schema implementations don't work with the supabase ssr package

anindosarker opened this issue Β· comments

Bug report

  • I confirm this is a bug with Supabase, not with my own application.
  • I confirm I have searched the Docs, GitHub Discussions, and Discord.

Describe the bug

I tried creating a client with my custom schema named tasks. But it throws errors and doesn't work.

Errors in the editor
Screenshot_20240311_123332

Code for the request:

import { createClient } from "@/utils/supabase/client"; // this is the client with ssr as mentioned above

const supabase = createClient();
const { data, error } = await supabase.from("tb_worker").select();
console.log("πŸš€ ~ getData ~ error:\n", error);

Errors in the console when I try to request for the data

{
    "code": "42P01",
    "details": null,
    "hint": null,
    "message": "relation \"public.tb_worker\" does not exist"
}

To Reproduce

Steps to reproduce the behavior, please provide code snippets or a repository:

  1. Create a sample nextjs project with supabase from the docs
  2. Download sample database types for any project with custom schema.
  3. Update either the browser client or the server client with the custom schema like this
import { createBrowserClient } from "@supabase/ssr";
import { Database } from "../types/database";

export const createClient = () =>
  createBrowserClient<Database>(
    process.env.NEXT_PUBLIC_SUPABASE_URL!,
    process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
    {
      db: {
        schema: "tasks", // I'm using custom schema named tasks. You can change it to your schema name
      },
    }
  );
  1. At this stage, you'll get typescript errors.
  2. You can still try to query for the data from the custom schema and will get the same errors.
import { createClient } from "@/utils/supabase/client"; // this is the client with ssr as mentioned above

const supabase = createClient();
const { data, error } = await supabase.from("tb_worker").select();
console.log("πŸš€ ~ getData ~ error:\n", error);

Expected behavior

Should get the data. It works perfectly with the supabase js library. Example:
page.tsx

"use client";

import { createSupbaseClent } from "@/utils/supabase/supabaseClient";
import { useEffect, useState } from "react";

export default function Page() {
  const [notes, setNotes] = useState<any[] | null>(null);
  const supabase = createSupbaseClent();

  useEffect(() => {
    const getData = async () => {
      const { data, error } = await supabase.from("tb_worker").select();
      console.log("πŸš€ ~ getData ~ error:\n", error);
      setNotes(data);
    };
    getData();
  }, []);

  if (!notes) return <div>Loading ...</div>;

  return (
    <>
      <pre>{JSON.stringify(notes, null, 2)}</pre>
    </>
  );
}

System information

  • OS: [linux: Manjaro]
  • Version of supabase-js: [2.39.7]
  • Version of Node.js: [20]

Additional context

I've checked wherther it's an issue of Typescript types generated by the database type generation in the supabase dashboard. Maybe this bug is also related to that as well.