暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用Supabase快速构建应用

MemFireDB 2021-09-09
6416

Supabase是什么

BaaS(Backend as a Service,后端即服务)是指我们不再编写或管理所有服务端组件,可以使用领域通用的远程组件(而不是进程内的库)来提供服务。理解BaaS,需要搞清楚它与PaaS的区别。

PaaS需要参与应用的生命周期管理,BaaS则仅仅提供应用依赖的第三方服务。典型的PaaS平台需要提供手段让开发者部署和配置应用,例如自动将应用部署到Tomcat容器中,并管理应用的生命周期。BaaS不包含这些内容,BaaS只以API的方式提供应用依赖的后端服务,例如数据库和对象存储。BaaS可以是公共云服务商提供的,也可以是第三方厂商提供的。其次从功能上讲,BaaS可以看作PaaS的一个子集,即提供第三方依赖组件的部分。

BaaS服务还允许我们依赖其他人已经实现的应用逻辑。对于这点,认证就是一个很好的例子。很多应用都要自己编写实现注册、登录、密码管理等逻辑的代码,而对于不同的应用这些代码往往大同小异。完全可以把这些重复性的工作提取出来,再做成外部服务,而这正是Auth0和Amazon Cognito等产品的目标。它们能实现全面的认证和用户管理,开发团队再也不用自己编写或者管理实现这些功能的代码。

Firebase是一家典型的BaaS公司,它可以帮助手机以及网页应用的开发者轻松构建App。通过Firebase的框架就可以简单地开发一个App,无需服务器以及基础设施,简单来说,它就是一整套的解决方案。

Supabase 是一个开源的 Firebase 替代方案。官方表示,其正在使用企业级开源工具构建 Firebase 的功能。Supabase 可以:

  • 监听数据库的变化。
  • 查询你的表,包括过滤、分页和深度嵌套关系(如GraphQL)。
  • 创建、更新和删除行。
  • 管理你的用户和他们的权限。
  • 使用一个简单的用户界面与你的数据库进行交互。

Supabase的美妙之处在于,在可能的情况下,他们选择了使用现有的库和数据库。他们没有利用最先进的技术,而是使用PostgreSQL来实现大量的功能,并使用其他库来实现其他功能。从锁定的角度来看,缺乏自定义的功能是一件好事。

下面我们通过简短的五步带你快速的开发一个无需后端服务器的web应用

开始做实验咯

克隆代码

git clond https://gitee.com/memfiredb/supabase.git

创建应用

登录memfire cloud创建应用,并获取服务地址以及token信息

Anon public是客户端API密钥。它允许“匿名访问”您的数据库,直到用户登录。登录后,密钥将切换到用户自己的登录令牌。这将为数据启用行级安全性。

注意:service_role secret可以绕过任何安全策略完全访问您的数据。这些密钥必须保密,并且要在服务器环境中使用,决不能在客户端或浏览器上使用。

在后续示例代码中,需要提供REACT_APP_SUPABASE_URL和REACT_APP_SUPABASE_KEY。

配置访问秘钥

将上一步中获取的anon public和网址分别设置到REACT_APP_SUPABASE_KEY和REACT_APP_SUPABASE_URL中

supabase/examples/react-todo-list/src/lib/constants.js

创建数据表

找到该对应的数据库,点击在线sql编辑器按钮,创建表及安全策略

create table public.todos (  id bigint generated by default as identity primary key,  user_id uuid references auth.users not null,  task text check (char_length(task) > 3),  is_complete boolean default false,  inserted_at timestamp with time zone default timezone('utc'::text, now()) not null);alter table public.todos enable row level security;create policy "Individuals can create todos." on public.todos for    insert with check (auth.uid() = user_id);create policy "Individuals can view their own todos. " on public.todos for    select using (auth.uid() = user_id);create policy "Individuals can update their own todos." on public.todos for    update using (auth.uid() = user_id);create policy "Individuals can delete their own todos." on public.todos for    delete using (auth.uid() = user_id);
运行程序
npm config set registry https://registry.npm.taobao.orgcd supabase/examples/react-todo-listnpm installnpm run start --host 0.0.0.0

程序界面如下图




阅读原文 |快速体验




MemFire Cloud是基于MemFireDB云原生和线性扩展能力而打造的数据库云服务,致力于为互联网用户提供一站式数据库自助服务,实现按需使用,随用随取,最大化的节约成本,加速用户的业务创新。



点一下阅读原文,获得更多惊喜


文章转载自MemFireDB,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论