全书目录

第四十八篇:Supabase 完全指南 —— 开源数据港口宇宙

第十一章:Edge Functions —— 港口调度中心,处理那些不该直接暴露给码头工人的事

2 分钟 524 字 第 898 / 962 个阅读单元

很多人以为 Supabase 只是“数据库 + Auth + SDK”。

其实它还有很重要的一块:

Edge Functions。

这部分非常适合被理解成:

港口调度中心。

官方文档明确说明:

  • Edge Functions 是全局分布式的 TypeScript 函数
  • 运行在 Supabase Edge Runtime
  • Deno compatible
  • 适合 webhook、第三方集成、低延迟 HTTP 端点等

一个最小示例:

ts
import { createClient } from "npm:@supabase/supabase-js@2";

Deno.serve(async (req: Request) => {
  const supabase = createClient(
    Deno.env.get("SUPABASE_URL") ?? "",
    Deno.env.get("SUPABASE_ANON_KEY") ?? "",
    {
      global: {
        headers: {
          Authorization: req.headers.get("Authorization") ?? "",
        },
      },
    }
  );

  const { data, error } = await supabase.from("projects").select("id, name");
  if (error) {
    return new Response(error.message, { status: 500 });
  }

  return Response.json(data);
});

这段代码很关键。

因为官方文档也特别讲到一个点:

你可以把调用者的 Authorization 头传进去,这样函数里的数据库访问也能继续受 RLS 约束。

这像什么?

text
港口调度中心帮你办理手续
但依然按来港船只的真实证件和通关规则办事

#Edge Functions 适合做什么

  • webhook 接收
  • 第三方服务集成
  • 需要保密的服务端逻辑
  • 轻量低延迟 API
  • 生成签名
  • AI / 邮件 / 支付等外围集成

#不适合硬塞什么

  • 超长耗时批处理
  • 极重后台作业
  • 复杂、长生命周期的重服务编排

官方文档也提示:

  • 会有 cold starts
  • 重任务更适合 background workers
  • 数据库连接要按 serverless 思维处理

也就是说:

调度中心很灵活,但不是让你把整座工业园都搬进去。