Supabase 的入门详细介绍

Supabase 是什么?

简单来说,Supabase 是一个开源的 Firebase 替代品。它提供了一整套后端即服务 (BaaS - Backend as a Service) 的工具,让你能够快速构建应用程序的后端,而无需自己从头搭建和管理服务器、数据库等基础设施。

Supabase 的核心是强大的 PostgreSQL 数据库,并在此基础上提供了一系列围绕数据、用户、文件和自定义逻辑的功能。

为什么选择 Supabase?(核心优势)

  1. 开源和可移植性:

    • 核心技术栈是开源的,这意味着你拥有更大的控制权。
    • 你可以选择使用 Supabase 官方的托管服务,也可以选择在自己的服务器上自托管 (self-hosting)。
  2. 强大的 PostgreSQL 核心:

    • 在这儿你会获得的一个功能齐全的 PostgreSQL 数据库,可以使用完整的 SQL 功能,包括复杂的查询、事务、触发器、函数和丰富的扩展 (如 PostGIS, pg_cron, pgvector)。
    • 对于熟悉 SQL 的开发者来说,上手非常快。
  3. 易用性和开发者体验:

    • 提供直观的图形用户界面 (Supabase Studio) 用于管理数据库、用户、存储等。
    • 自动生成 RESTful 和 GraphQL API,无需编写后端代码即可进行数据操作。
    • 提供多种语言的客户端库 (JavaScript, Python, Dart/Flutter, Swift, Kotlin 等),方便与前端和移动应用集成。
  4. 一体化解决方案:

    • 数据库 (Database): 核心功能。
    • 用户认证 (Authentication): 轻松实现用户注册、登录、第三方登录等。
    • 文件存储 (Storage): 存储和提供图片、视频等大文件。
    • 边缘函数 (Edge Functions): 编写和部署无服务器函数,处理自定义后端逻辑。
    • 实时 (Realtime): 订阅数据库变更,实现实时数据同步。
  5. 成本效益:

    • 提供慷慨的免费套餐,非常适合个人项目、学习和原型开发。
    • 付费套餐的价格也相对透明和合理。

Supabase 的核心功能组件详解:

  1. 数据库 (Database - PostgreSQL):

    • 表格编辑器: 在 Supabase Studio 中可以像操作电子表格一样创建、修改表结构和数据。
    • SQL 编辑器: 直接在浏览器中编写和执行 SQL 查询。
    • 行级安全策略 (Row Level Security - RLS): 这是 Supabase 安全模型的基石。你可以基于用户身份、角色等定义精细的数据访问规则,确保用户只能访问他们被授权的数据。强烈建议启用并配置 RLS。
    • 数据库函数和触发器: 利用 PostgreSQL 的强大功能,在数据库层面实现复杂的业务逻辑。
    • 数据库扩展: 安装如 pg_cron (定时任务)、pgvector (向量数据,用于 AI/ML) 等扩展增强功能。
  2. 用户认证 (Authentication):

    • 多种登录方式: 邮箱密码、手机 OTP、魔法链接 (Magic Links)、匿名登录。
    • 社交登录 (OAuth): 支持 Google, GitHub, Apple, Facebook, Twitter, Azure, GitLab 等众多提供商。
    • JWT (JSON Web Tokens): 使用行业标准的 JWT 进行会话管理。
    • 用户管理: 在 Supabase Studio 中查看和管理用户。
    • 与 RLS 集成: 认证信息 (如用户 ID) 可以直接在 RLS 策略中使用。
  3. 文件存储 (Storage):

    • 存储桶 (Buckets): 类似于文件夹,用于组织文件。可以设置公开或私有。
    • 权限控制: 可以为存储桶和单个对象设置精细的访问权限,与用户认证系统和 RLS 集成。
    • CDN 集成: 通常会自动配置 CDN,加速全球文件访问。
  4. 边缘函数 (Edge Functions):

    • Serverless 架构: 无需管理服务器,按需执行。
    • 使用 Deno (TypeScript/JavaScript): 编写函数逻辑。
    • 用途: 处理 Webhooks、与第三方 API 交互、执行需要保密的后端逻辑、数据校验和转换等。
    • 全球部署: 部署在靠近用户的边缘节点,减少延迟。
  5. 实时 (Realtime):

    • 订阅数据库变更: 当数据库中的数据发生插入、更新或删除时,客户端可以实时收到通知。
    • 用途: 聊天应用、实时协作、实时仪表盘、通知系统等。
    • 基于 PostgreSQL 的 LISTEN/NOTIFY 和 Supabase Realtime 服务器。
  6. 自动生成的 API:

    • RESTful API: Supabase 使用 PostgREST 自动为你的数据库表生成 RESTful API 端点。
    • GraphQL API: 通过 pg_graphql 扩展,可以自动生成 GraphQL API。
  7. Supabase Studio (管理后台):

    • 一个用户友好的 Web 界面,用于管理上述所有功能:
      • 数据库表和数据
      • SQL 编辑器
      • 用户认证配置和用户列表
      • 文件存储桶和文件
      • 边缘函数部署和日志
      • API 文档和密钥管理
      • 项目设置、日志、使用量监控等

如何开始使用 Supabase (基本步骤):

  1. 注册账户: 访问 Supabase 官网 并注册一个账户。
  2. 创建新项目:
    • 登录后,点击 “New project”。
    • 选择一个组织 (Organization)。
    • 填写项目名称 (Name)。
    • 设置一个强大的数据库密码 (Database Password),并务必妥善保存! 创建后 Supabase 不会再显示它。
    • 选择一个区域 (Region),通常选择离你的用户最近的区域。
    • 选择定价计划 (Pricing Plan),通常从 “Free” 开始。
    • 点击 “Create new project”。
  3. 等待项目创建: 大约需要几分钟时间。
  4. 探索项目仪表盘 (Supabase Studio):
    • 项目创建完成后,你会被带到项目仪表盘。
    • 获取 API 信息: 在 “Project Settings” -> “API” 页面,你会找到:
      • Project URL: 你的项目 API 的基础 URL。
      • anon (public) key: 用于客户端的公共 API 密钥。这个密钥是安全的,可以暴露在前端代码中,因为它会受到 RLS 策略的限制。
      • service_role key: 拥有超级权限的密钥,绝不能暴露在前端或不安全的环境中。 仅用于后端服务、脚本或受信任的环境 (如 Edge Functions)。
  5. 安装客户端库:
    • 根据你的前端框架或语言选择合适的 Supabase 客户端库。最常用的是 supabase-js (用于 JavaScript/TypeScript 项目)。
    • 例如,在 JavaScript 项目中:npm install @supabase/supabase-jsyarn add @supabase/supabase-js
  6. 在你的应用中初始化 Supabase Client:
    // 示例 (JavaScript)
    import { createClient } from '@supabase/supabase-js';const supabaseUrl = 'YOUR_SUPABASE_URL'; // 从项目 API 设置中获取
    const supabaseAnonKey = 'YOUR_SUPABASE_ANON_KEY'; // 从项目 API 设置中获取const supabase = createClient(supabaseUrl, supabaseAnonKey);export default supabase;
    
  7. 开始使用 Supabase 功能:
    • 数据库操作 (CRUD):
      // 插入数据
      const { data, error } = await supabase.from('your_table_name').insert([{ some_column: 'someValue', other_column: 'otherValue' }]);// 查询数据
      const { data, error } = await supabase.from('your_table_name').select('*') // 或者 'column1, column2'.eq('some_column', 'someValue'); // 添加查询条件
      
    • 用户认证:
      // 邮箱密码注册
      const { data, error } = await supabase.auth.signUp({email: 'user@example.com',password: 'securepassword123',
      });// 邮箱密码登录
      const { data, error } = await supabase.auth.signInWithPassword({email: 'user@example.com',password: 'securepassword123',
      });// 获取当前用户
      const { data: { user } } = await supabase.auth.getUser();// 退出登录
      const { error } = await supabase.auth.signOut();
      
    • 文件存储:
      // 上传文件
      const { data, error } = await supabase.storage.from('your_bucket_name').upload('path/to/your_file.png', fileObject);// 下载文件
      const { data, error } = await supabase.storage.from('your_bucket_name').download('path/to/your_file.png');
      

学习 Supabase 的关键点:

  • 理解 PostgreSQL 和 SQL: 虽然 Supabase 简化了很多操作,但了解基础的 SQL 和数据库概念会对你非常有帮助。
  • 掌握行级安全策略 (RLS): 这是确保数据安全的核心,务必花时间学习如何正确配置 RLS 策略。
  • 区分 anon key 和 service_role key: 正确使用 API 密钥至关重要。
  • 查阅官方文档: Supabase 的官方文档非常完善,是学习和解决问题的最佳资源。
  • 动手实践: 创建一个小型项目来练习使用 Supabase 的各项功能。

总结:

Supabase 为开发者提供了一个强大、灵活且易于上手的后端平台。通过利用其集成的数据库、认证、存储和无服务器函数等功能,可以让我们加快应用程序的开发速度,将更多精力投入到前端和业务逻辑的创新上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/80857.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】mysql/bin目录下程序介绍

🔥个人主页: 中草药 🔥专栏:【MySQL】探秘:数据库世界的瑞士军刀 MySQL在安装完成后,通常会包含以下程序,以Ubuntu上的mysql为例,我们可以查看到 以下是常用的mysql程序 程序名作用…

IDEA+git将分支合并到主分支、IDEA合并分支

文章目录 一、合并分支二、可能遇到的问题2.1、代码冲突 开发过程中我们可能在开发分支(dev)中进行开发,等上线后将代码合并到主分支(master)中,本文讲解如何在IDEA中将dev分支的代码合并到master分支中。 一、合并分支 功能说明:将dev分支的…

通过Ollama读取模型

通过Ollama读取模型 前言一、查看本地Ollama上有哪些模型二、调用bge-m3模型1、调用模型2、使用bge-m3进行相似度比较 三、调用大模型 前言 手动下载和加载大模型通常需要复杂的环境配置,而使用Ollama可以避免这一问题。本文将介绍如何调用Ollama上的模型。 一、查…

JS 中 Object.keys() 和 Object.values() 的深度解析与应用

文章目录 前言一、Object.keys() 和 Object.values() 基础1. Object.keys()2. Object.values() 二、与 Object.entries() 的对比三、实际应用场景1. 遍历对象属性2. 判断对象是否为空3. 对象与数组的转换4. 动态属性操作5. 过滤对象属性 总结 前言 在 JavaScript 开发中&#…

HCIP(BFD)

一、前言 随着网络应用的广泛部署,网络发生故障极大可能导致业务异常。为了减小链路、设备故障对业 务的影响,提高网络的可靠性,网络设备需要尽快检测到与相邻设备间的通信故障,以便及时采取措施,保证业务正常进行。BFD(Bidirectional Forwarding Detection,双向转发检测)提供…

Webpack其他插件

安装html打包插件 const path require(path); const HtmlWebpackPlugin require(html-webpack-plugin) module.exports {entry: path.resolve(__dirname,src/login/index.js),output: {path: path.resolve(__dirname, dist),filename: ./login/index.js,clean:true},Plugin:…

【Linux网络】网络层

网络层 在复杂的网络环境中确定一个合适的路径 IP 协议 IPV4 点分十进制[0,255].[0,255].[0,255].[0,255]IPV6 IP地址目标网格目标主机 基本概念 主机:配有IP地址,但是不进行路由控制的设备;路由器:即配有IP地址,又能进行路由控制;节点:主机和路由器的统称。 两个问题 路…

跨域的几种方案

因为浏览器出于安全考虑&#xff0c;有同源策略。也就是说&#xff0c;如果协议、域名、端口有一个不同就是跨域&#xff0c;Ajax 请求会失败。 我们可以通过以下几种常用方法解决跨域的问题 JSONP JSONP 的原理很简单&#xff0c;就是利用 <script> 标签没有跨域限制…

基于EFISH-SCB-RK3576/SAIL-RK3576的智能安检机技术方案‌

&#xff08;国产化替代J1900的全场景技术解析&#xff09; 一、硬件架构设计‌ ‌核心处理模块‌ ‌异构计算架构‌&#xff1a; ‌四核Cortex-A72&#xff08;2.3GHz&#xff09;‌&#xff1a;运行X光图像重建算法&#xff08;FDK反投影&#xff09;&#xff0c;支持双能谱…

MQ防重复消费----去重表结合 Spring AOP 切面编程,抽象封装成通用幂等注解

以下内容包含针对 NoMQDuplicateConsumeAspect 的深度面试问答、消息队列重投递触发场景、AOP 切面编程扩展&#xff0c;以及基于已有实现的关键要点与步骤总结。文中所有论断均引用多源资料&#xff0c;以助于您在面试与实战中全面展示对幂等消费切面及消息重投的理解。 一、深…

[:, :, 1]和[:, :, 0] 的区别; `prompt_vector` 和 `embedding_matrix`的作用

prompt_vector = torch.sum(prompt_embedding * attention_weights.unsqueeze(-1), dim=1) # [1, hidden_dim] prompt_vector = torch.sum(prompt_embedding * attention_weights.unsqueeze(-1), dim=1) 主要作用是通过将 prompt_embedding 与 attention_weights 相乘后再按指…

Dinky 安装部署并配置提交 Flink Yarn 任务

官方文档 https://www.dinky.org.cn/docs/1.1/deploy_guide/normal_deploy 版本 dinky 1.1.0、1.2.3 当前最新发布版本为 1.2.3 &#xff0c;但是官方文档最新稳定版为 1.1 &#xff0c;所以先选择 1.1.0&#xff0c;验证通过后&#xff0c;再尝试 1.2.3 &#xff0c;发现 1…

java连数据库

一、准备工作 ​​安装MySQL数据库​​ 确保已安装MySQL服务器并启动服务 ​​下载JDBC驱动​​ 官方驱动&#xff1a;MySQL Connector/JMaven依赖&#xff1a; <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactI…

【生态信息】开源软件全方位解析

开源软件(0pen Source Software&#xff0c;0ss)是指其源代码可以公开发布、查看、使用和修改的软件。这一概念的核心在于开放性和共享性&#xff0c;允许开发者自由地使用、修改、分发以及改进软件。开源软件通常遵循特定的开源许可证&#xff0c;这些许可证确保了软件的自由使…

探秘 DeerFlow:字节跳动开源的科研创作魔法盒!

1.前言 字节跳动于2025年5月9日开源了名为DeerFlow的全新Deep Research项目&#xff0c;该项目基于LangStack框架&#xff0c;旨在通过人工智能技术简化科研和内容创作流程。DeerFlow整合了语言模型、网络搜索、爬虫和Python代码执行等多种工具&#xff0c;支持深度研究、MCP集…

机器学习第十一讲:标准化 → 把厘米和公斤单位统一成标准值

机器学习第十一讲&#xff1a;标准化 → 把厘米和公斤单位统一成标准值 资料取自《零基础学机器学习》。 查看总目录&#xff1a;学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章&#xff1a;DeepSeek R1本地与线上满血版部署&#xff1a;超详细手把手指南 一、买菜…

less中使用 @supports

在Less中使用supports supports 是CSS的条件规则&#xff0c;用于检测浏览器是否支持特定的CSS属性或值。在Less中&#xff0c;你可以像在普通CSS中一样使用supports&#xff0c;同时还能利用Less的特性来增强它。 基本用法 /* 检测浏览器是否支持display: flex */ supports …

LeetCode Hot100 (1/100)

目录 一、有关数组和动态数组的排序&#xff08;sort函数&#xff09; 1.普通数组的排序 基本用法 降序排序 2.vector的排序 基本用法 降序排序 二、数组长度和一些vector的基本语法 1. 静态数组长度计算​ 2. 安全获取数组长度&#xff08;C17 起&#xff09;​ 3.vecto…

通过MCP让LLM调用系统接口

场景 MCP的出现大大丰富了LLM的功能&#xff0c;对于存量系统&#xff0c;我们希望能让模型调用已有的接口&#xff0c;以最小的成本让AI能够获取系统内部数据。因此我们开发了一个名为http-api-call的MCP Server&#xff0c;来支持模型到内部API的调用 实现方案 使用用标准…

基于Transformer的多资产收益预测模型实战(附PyTorch实现与避坑指南)

基于Transformer的多资产收益预测模型实战(附PyTorch模型训练及可视化完整代码) 一、项目背景与目标 在量化投资领域,利用时间序列数据预测资产收益是核心任务之一。传统方法如LSTM难以捕捉资产间的复杂依赖关系,而Transformer架构通过自注意力机制能有效建模多资产间的联…