最近我需要在 Supbase 项目中运行自定义 SQL 函数。他们的 Javascript SDK 不支持这一点,所以唯一的方法是通过数据库函数。然后,您可以使用 Javascript SDK 调用这些函数。

[Supabase](https://res.cloudinary.com/practicaldev/image/fetch/s--aioqfT-w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.bloggu .io/ipfs/bafkreidyyytr7h5uindrv776chnzkfqtxip4wpfwx435jqipkqac6k66mi)

让我们看一个使用名为users的表的非常简单的示例

CREATE OR REPLACE FUNCTION all_users()
  RETURNS TABLE (f_id   uuid   
               , f_email   text
               , f_full_name text)
  LANGUAGE plpgsql AS
$func$
BEGIN
   RETURN QUERY
   SELECT id, email, full_name FROM users
END
$func$;

进入全屏模式 退出全屏模式

上述函数将为表中的所有用户返回id, email, full_name。要快速测试该功能,您可以运行SELECT * FROM all_users();

现在,转到您的 Javascript 代码,您可以使用以下语法运行该函数:

let { data, error } = await supabase.rpc('all_users')

进入全屏模式 退出全屏模式

就这么简单😅。

现在,让我们看一个接收两个参数的函数:

CREATE OR REPLACE FUNCTION all_users(created_from timestamp, created_to timestamp)
  RETURNS TABLE (f_id   uuid   
               , f_email   text
               , f_full_name text)
  LANGUAGE plpgsql AS
$func$
BEGIN
   RETURN QUERY
   SELECT id, email, full_name FROM users BETWEEN created_from AND created_to
END
$func$;

进入全屏模式 退出全屏模式

而且,我们可以像这样从 Javascript SDK 调用这个函数:

const { data, error } = await supabase
  .rpc('all_users', { created_from: ..., created_to: ... })

进入全屏模式 退出全屏模式

如果你想联系我,查看我的 Twitter。

使用bloggu.io发布的文章。免费试用。

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐