typescript - getServerSideProps 上的 Supbase 策略 - Next.js
问题描述
我正在使用 Next.js 和 Supabase 作为 BaaS 制作 Trello 克隆。
在我的 Supbase 表中,我有以下策略:
策略在客户端使用以下代码运行:
const { data } = await supabase
.from<BoardType>('board')
.select('*')
.eq('id', board.id)
.single();
但是当我尝试获取有关它的板信息时,getServerSideProps
它不起作用,它总是返回 null 。我知道,例如,如果你想在服务器端获取经过身份验证的用户,你必须使用supabase.auth.api.getUserByCookie(context.req)
所以我不知道我是否缺少某些东西,但我找不到与此相关的任何东西。
有谁知道如何处理?
[已编辑]
这是getServerSideProps
代码:
export const getServerSideProps: GetServerSideProps<BoardSlugProps> = async ({
query,
}) => {
const { data } = await supabase
.from<BoardType>('board')
.select('*')
.eq('id', query.slug as string)
.single();
console.log(data);
return {
props: {
board: data,
},
};
};
解决方案
可能不是最好的方法,但这就是我通过这个 Github 讨论的一些提示解决它的方法https://github.com/supabase/supabase/discussions/1094#discussioncomment-714633
据我了解,与浏览器(无会话)相比,服务器上的 Supabase 客户端略有不同。从 cookie 中提取令牌并将其添加到客户端可以使对 supabase 的请求来自经过身份验证的用户。
export const getServerSideProps: GetServerSideProps = ({ req }) => {
const { user, token } = await supabase.auth.api.getUserByCookie(req);
supabase.auth.setAuth(token);
const { data, error } = await supabase.from(...
推荐阅读
- umbraco - 来自 uskinned 网站的 Umbraco 主题不起作用
- rdf4j - RDF4J 2.4.0-M3 GeoSPARQL 查询不工作
- php - 从未设置的多维数组中删除数组
- excel - 将任何长度的有符号十六进制数转换为有符号十进制数 (Excel)
- javascript - Vue.js fetch 返回空的 responseText
- c# - 在 Linq 查询中使用布尔属性或 Id 过滤掉结果
- c# - 将双精度转换为时间格式
- python - 需要输入多个数据时抓取信息的最佳方法
- vb.net - VB.Net 中等效的 VB6 App.HelpFile 是什么
- android - 报警管理器 | 时间更新时错误触发