标签: supabase

如何访问 Next.js 中 getServerSideProps 中的路由参数?

我想使用 slug 中的 ID 查询我的 Supabase 表,localhost:3000/book/1然后在 Next.js 的页面上显示有关该书的信息。

桌子

在此输入图像描述

书/[id].js

import { useRouter } from 'next/router'
import { getBook } from '@/utils/supabase-client';

export default function Book({bookJson}) {
  const router = useRouter()
  const { id } = router.query
  
  return <div>
    <p>Book: {id}</p>
    <h1>{bookJson}</h1>
  </div>
}

export async function getServerSideProps(query) {
  const id = 1 // Get ID from slug
  const book = await getBook(id);
  const bookJson = JSON.stringify(book)

  return {
    props: {
      bookJson
    }
  };
}
Run Code Online (Sandbox Code Playgroud)

utils/supabase-client.js

export …
Run Code Online (Sandbox Code Playgroud)

javascript next.js supabase

36
推荐指数
1
解决办法
4万
查看次数

使用 Nextjs-13 + Supabase 时无法解决“编码”模块错误

我正在尝试使用 Supabase 从我的表单插入/收集数据。但是当我编译时,出现编码模块未找到错误。我已经尝试过缓存清理和重新安装 npm 模块。他们也没有工作。

项目结构:

在此输入图像描述

apply/page.tsx 代码:

"use client"
import { supabase } from "lib/supabaseClient"

export default function Apply() {

    // This function called by button so we use "use client" at top.
    async function createApplyRecord() {
        const { error } = await supabase
            .from('applications')
            .insert({id: 1, fullname: "test", email: "aa", phone: "bb", githuburl: "cc", linkedinurl: "dd", about: "ee"})
            console.log("inserted")
            if(error) {
                console.log(error);
            }
    }

  return (SOME HTML CODE HERE)
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误: 在此输入图像描述

npm typescript next.js supabase

32
推荐指数
3
解决办法
3万
查看次数

找不到模块:无法解析“/vercel/path0/node_modules/cross-fetch/node_modules/node-fetch/lib”中的“编码”

有没有人遇到过 npm 包带来的不间断警告问题:@supabase/supabase-js

The warning message:

warn  - ./node_modules/cross-fetch/node_modules/node-fetch/lib/index.js
Module not found: Can't resolve 'encoding' in '/Users/maxsilva/Sites/kamapay/sasa-frontend/node_modules/cross-fetch/node_modules/node-fetch/lib'

Import trace for requested module:
./node_modules/cross-fetch/node_modules/node-fetch/lib/index.js
./node_modules/cross-fetch/dist/node-ponyfill.js
./node_modules/@supabase/supabase-js/dist/main/lib/fetch.js
./node_modules/@supabase/supabase-js/dist/main/SupabaseClient.js
./node_modules/@supabase/supabase-js/dist/main/index.js
./lib/supabaseClient.js
./app/[lng]/page.jsx
Run Code Online (Sandbox Code Playgroud)

npm next.js supabase supabase-database supabase-js

22
推荐指数
1
解决办法
2万
查看次数

如何在 Supabase 中创建枚举列?

我想在 Supabase 表中创建一个枚举列。Supabase 在底层使用 Postgres,所以我知道从技术上来说,如果我使用 SQL 手动执行此操作是可能的。但是有什么方法可以通过前端以更简单的方式做到这一点吗?

sql database postgresql supabase supabase-database

19
推荐指数
2
解决办法
8611
查看次数

如何在 Supabase 中使用单个 API 调用插入多个表

我的表格的简化结构 - 2 个主表,1 个关系表。

这是我的表的简化结构 - 2 个主表,1 个关系表。
处理插入 API 的最佳方法是什么?如果我只有一个客户端和 Supabase:

- First API call to insert book and get ID
- Second API call to insert genre and get ID
- Third API call to insert book-genre relation
Run Code Online (Sandbox Code Playgroud)

这是我能想到的,但是3个API调用似乎是错误的。
有没有一种方法可以让我通过客户端的单个 API 调用插入到这 3 个表中,就像我可以调用的单个 postgres 函数一样?
请分享一个API的通用示例,谢谢!

postgresql supabase supabase-database

16
推荐指数
1
解决办法
7818
查看次数

如何从supabase-js客户端访问自定义模式?

我喜欢 Supabase,但我们的团队需要使用 PostgreSQL 提供的模式功能 - 不幸的是,到目前为止我们未能成功地使模式发挥作用。

其他信息:

  • PostgreSQL 14
  • Supabase JS SDK 的最新版本
  • 我们通过 Supabase 的专业计划托管了 SUPABASE

我们已经尝试过:

  1. 我们创建了一个新模式并添加了对所有类型身份验证的访问(为什么全部?我们首先想到身份验证可能存在错误):

    CREATE SCHEMA Brano;
    GRANT USAGE ON SCHEMA Brano TO postgres, anon, authenticated, service_role, dashboard_user;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 通过此设置向 API 公开架构:

    在此输入图像描述

  3. 尝试了以下代码:

    var options = {
        schema: 'brano'
    }
    
    const supabaseUrl = 'supabaseUrl'
    const supabaseKey = 'supabaseKey'
    const supabaseClient = createClient(supabaseUrl, supabaseKey, options);
    
    const { data, error } = await supabaseClient
        .from('test_brano')
        .insert([{
            data: 123
    }]);
    
    Run Code Online (Sandbox Code Playgroud)
  4. 得到这个错误:

    {
        "message":"permission denied for table test_brano", …
    Run Code Online (Sandbox Code Playgroud)

sql postgresql supabase

16
推荐指数
1
解决办法
6889
查看次数

Supabase 客户端权限被拒绝,模式为 public

每当我尝试使用 @supabase/supabase-js 查询数据库时,都会收到错误。

error: {
    hint: null,
    details: null,
    code: '42501',
    message: 'permission denied for schema public'
}
Run Code Online (Sandbox Code Playgroud)

我认为这与我用来处理迁移的 Prisma 有关。当我只是浏览原型时,客户端工作得很好,但设置 Prisma 后,它就不再工作了。

对于如何解决这个问题,有任何的建议吗?我真的很希望能够同时使用 Supabase REST API 和 Prisma。

postgresql prisma prisma-graphql supabase

15
推荐指数
4
解决办法
2万
查看次数

Supabase 存储桶 - 新行违反了表“对象”的行级安全策略

我在将头像上传到我的 SUPABASE 存储桶时遇到问题,因为它给了我“新行违反了表“对象”的行级安全策略”。我尝试了其他 StackOverflow 解决方案,但没有任何效果。在尝试上传之前,我使用supabse登录,以便我的用户通过身份验证,但它仍然不允许我上传。我在 storage.objects 中添加了这个策略:

(role() = 'authenticated'::text)并单击插入按钮。有谁知道我做错了什么?我认为这与政策有关。谢谢

这就是我尝试上传头像的方式:

try {
  const { data, error } = await supabase.storage
    .from("/public/avatars")
    .upload(`${values.email}.png`, values.avatar, {
      cacheControl: "3600",
      upsert: true,
    });
  if (error) throw error;
} catch (error) {
  console.log(error);
}
Run Code Online (Sandbox Code Playgroud)

supabase

14
推荐指数
1
解决办法
1万
查看次数

INSERT 到表中并返回记录的 id Supabase JS

根据文档,插入新记录

const { error } = await supabase
  .from('countries')
  .insert({ name: 'Denmark' })
Run Code Online (Sandbox Code Playgroud)

回报

{
  "status": 201,
  "statusText": "Created"
}
Run Code Online (Sandbox Code Playgroud)

对于 的列Is Identity,它会自动为该列分配一个连续的唯一编号。

如何使用 JavaScript 客户端获取 Supabase 上新插入记录的 ID?

supabase supabase-database

14
推荐指数
1
解决办法
1万
查看次数

在同一浏览器上下文中检测到多个 GoTrueClient 实例

我正在使用 nextjs 和 supabase 创建一个项目。

由于未知原因,我在控制台中收到以下警告:

在同一浏览器上下文中检测到多个 GoTrueClient 实例。这不是错误,但应该避免这种情况,因为在同一存储键下并发使用时可能会产生未定义的行为。

我似乎找不到可能导致此问题的原因

这是我在 _app.tsx 中启动 supabase 实例的方式:

export default function App({
  Component,
  pageProps,
}: AppProps<{ initialSession: Session }>) {
  const [supabaseClient] = useState(() => createBrowserSupabaseClient());

  return (
    <>
      <style jsx global>
        {`
          :root {
            --font-inter: ${inter.style.fontFamily};
          }
        `}
      </style>
      <SessionContextProvider
        supabaseClient={supabaseClient}
        initialSession={pageProps.initialSession}
      >
        <ChakraProvider theme={theme}>
          <Layout>
            <Component {...pageProps} />
          </Layout>
        </ChakraProvider>
      </SessionContextProvider>
    </>
  );
}
Run Code Online (Sandbox Code Playgroud)

这就是我在组件中使用实例的方式:

const ForgotPassword = () => {
  const toast = useToast();
  const supabase = useSupabaseClient();
...
} …
Run Code Online (Sandbox Code Playgroud)

reactjs next.js supabase

12
推荐指数
1
解决办法
3583
查看次数