我想使用 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) 我正在尝试使用 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 包带来的不间断警告问题:@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) 我想在 Supabase 表中创建一个枚举列。Supabase 在底层使用 Postgres,所以我知道从技术上来说,如果我使用 SQL 手动执行此操作是可能的。但是有什么方法可以通过前端以更简单的方式做到这一点吗?
这是我的表的简化结构 - 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的通用示例,谢谢!
我喜欢 Supabase,但我们的团队需要使用 PostgreSQL 提供的模式功能 - 不幸的是,到目前为止我们未能成功地使模式发挥作用。
其他信息:
我们已经尝试过:
我们创建了一个新模式并添加了对所有类型身份验证的访问(为什么全部?我们首先想到身份验证可能存在错误):
CREATE SCHEMA Brano;
GRANT USAGE ON SCHEMA Brano TO postgres, anon, authenticated, service_role, dashboard_user;
Run Code Online (Sandbox Code Playgroud)
通过此设置向 API 公开架构:
尝试了以下代码:
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)
得到这个错误:
{
"message":"permission denied for table test_brano", …
Run Code Online (Sandbox Code Playgroud)每当我尝试使用 @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。
我在将头像上传到我的 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) 根据文档,插入新记录
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?
我正在使用 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) supabase ×10
next.js ×4
postgresql ×4
npm ×2
sql ×2
database ×1
javascript ×1
prisma ×1
reactjs ×1
supabase-js ×1
typescript ×1