首页
/ RxDB-Supabase 安装与配置指南

RxDB-Supabase 安装与配置指南

2025-04-19 15:42:01作者:农烁颖Land

1. 项目基础介绍

RxDB-Supabase 是一个开源项目,它结合了 RxDB 和 Supabase 的功能,为开发者提供了一个离线优先的数据库解决方案。该项目允许用户在客户端使用 RxDB 进行数据的读写操作,同时能够与远程的 Supabase 数据库进行同步。它适用于需要离线支持的应用程序,确保即使在无网络连接的情况下,用户也能够继续使用应用。

该项目主要使用 JavaScript 编程语言,并依赖于 TypeScript。

2. 关键技术与框架

  • RxDB: 一个客户端的、离线优先的数据库,支持多种存储层,包括 IndexedDB。
  • Supabase: 一个开源的 Firebase 替代品,它使用 Postgres 数据库,并提供了行级安全特性。
  • TypeScript: 提供静态类型检查,增强代码的可靠性和可维护性。

3. 安装和配置

准备工作

在开始安装之前,请确保您的开发环境中已经安装了以下工具:

  • Node.js
  • npm (Node.js 的包管理器)

安装步骤

  1. 安装依赖

    首先,在您的项目目录中打开终端,然后运行以下命令来安装必要的依赖:

    npm install rxdb-supabase rxdb @supabase/supabase-js --save
    
  2. 创建 RxDB 数据库

    在您的项目中创建一个 RxDB 数据库。以下是一个创建数据库的基本示例:

    import { createRxDatabase } from 'rxdb';
    import { getRxStorageDexie } from 'rxdb/plugins/storage-dexie';
    
    const myDatabase = await createRxDatabase({
      name: 'mydb',
      storage: getRxStorageDexie()
    });
    
  3. 定义数据模式

    接下来,定义一个符合您 Supabase 表结构的数据模式。以下是一个简单的例子:

    const mySchema = {
      title: 'item schema',
      version: 0,
      primaryKey: 'id',
      type: 'object',
      properties: {
        id: { type: 'string' },
        name: { type: 'string' },
        age: { type: 'integer' }
      },
      required: ['id', 'name', 'age']
    };
    
  4. 添加集合

    使用您定义的模式添加一个集合到数据库中:

    const myCollections = await myDatabase.addCollections({
      items: { schema: mySchema }
    });
    
  5. 创建 Supabase 表

    在您的 Supabase 项目中创建一个表,确保它包含 _modified_deleted 字段,这些字段是同步过程所必需的。

    CREATE TABLE public.items (
      id text NOT NULL,
      name text NOT NULL,
      age smallint,
      _deleted boolean DEFAULT false NOT NULL,
      _modified timestamp with time zone DEFAULT now() NOT NULL
    );
    ALTER TABLE public.items ADD CONSTRAINT items_pkey PRIMARY KEY (id);
    CREATE TRIGGER update_modified_datetime
      BEFORE UPDATE ON public.items
      FOR EACH ROW EXECUTE FUNCTION extensions.moddatetime('_modified');
    
  6. 初始化 Supabase 客户端

    在您的应用中初始化 Supabase 客户端,并确保进行了身份验证。

    import { createClient } from '@supabase/supabase-js';
    
    const supabaseUrl = 'your_supabase_url';
    const supabaseAnonKey = 'your_anon_key';
    
    const supabaseClient = createClient(supabaseUrl, supabaseAnonKey);
    
  7. 开始同步

    最后,创建一个新的同步对象并开始同步过程:

    import { SupabaseReplication } from 'rxdb-supabase';
    
    const replication = new SupabaseReplication({
      supabaseClient: supabaseClient,
      collection: myCollections.items
    });
    
    await replication.start();
    

以上步骤为您提供了安装和配置 RxDB-Supabase 的基础指南。请确保阅读官方文档以获取更多详细的配置选项和高级用法。

登录后查看全文
热门项目推荐

项目优选

收起
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
144
1.93 K
kernelkernel
deepin linux kernel
C
22
6
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
192
274
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
145
189
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
930
553
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
423
392
金融AI编程实战金融AI编程实战
为非计算机科班出身 (例如财经类高校金融学院) 同学量身定制,新手友好,让学生以亲身实践开源开发的方式,学会使用计算机自动化自己的科研/创新工作。案例以量化投资为主线,涉及 Bash、Python、SQL、BI、AI 等全技术栈,培养面向未来的数智化人才 (如数据工程师、数据分析师、数据科学家、数据决策者、量化投资人)。
Jupyter Notebook
75
66
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.11 K
0
openHiTLS-examplesopenHiTLS-examples
本仓将为广大高校开发者提供开源实践和创新开发平台,收集和展示openHiTLS示例代码及创新应用,欢迎大家投稿,让全世界看到您的精巧密码实现设计,也让更多人通过您的优秀成果,理解、喜爱上密码技术。
C
64
509