跳转到内容

把应用的数据存到你自己的 Supabase

要点在“后端 → 云服务”中用项目的连接字符串连接 Supabase。MonstarX 会统计你的表、数据行和账户;点击“迁移我的应用”后,它会把所有内容复制到 Supabase,核对每一行是否都已到位,把应用指向 Supabase,并改写代码。之后你的数据只存放在 Supabase 中;点击“迁回”即可把数据迁回来。

每个 MonstarX 应用都自带数据库,用来保存预约、订单、注册信息等内容。如果你更希望把这些信息放在你自己的 Supabase 项目中(一款流行的托管 Postgres 数据库),MonstarX 可以替你把数据迁移过去,并修改应用来使用它。

应用的数据同一时间只存放在一个地方:要么是 MonstarX 的数据库,要么是你的数据库,不会两者兼有。所以连接 Supabase 是一次迁移,而不是复制一份。

在以下情况下选择它:

  • 你的公司已经在用 Supabase,或者规定客户数据必须存放在公司自己的账户中。
  • 你想直接在 Supabase 的控制台、SQL 编辑器或报表工具中查看数据。
  • 你想自己管理数据库的备份和访问权限。

如果以上都不适用,MonstarX 自带的数据库是更简单的选择:无需任何设置,也不用单独付费。详见应用的数据库。

  • 创建一个新的空白 Supabase 项目。MonstarX 会自己创建表;如果项目中已经有同名且含有数据的表,MonstarX 会拒绝使用。
  • 准备好你的数据库密码,这是你在创建 Supabase 项目时设置的。
  • 如果应用的数据存放在 Firestore 中(详见 Firebase),请先把它切换回 MonstarX 数据库。

如何把应用的数据迁移到 Supabase?

Section titled “如何把应用的数据迁移到 Supabase?”
  1. 在 Supabase 中打开你的项目,点击 Connect。复制 Transaction pooler 连接字符串,并把其中的 [YOUR-PASSWORD] 替换成你的数据库密码。

  2. 在 MonstarX 中打开项目,点击顶部栏中的后端,再点击云服务。

  3. 在连接器中点击 Supabase 旁的连接;或者在此应用的数据存储位置中选择 Supabase(Postgres),会打开同一个表单。

  4. 把连接字符串粘贴到连接字符串中。其他字段都是选填的:

    • 项目 URL 和匿名密钥:仅在应用还需要使用 Supabase 自身的 API 或存储时填写。
    • 服务角色密钥:请务必保密。可以留空:它用于把登录或文件迁移到 Supabase,而迁移目前还不支持这项操作。
  5. 点击连接 Supabase。MonstarX 会先确认能在其中创建表,然后才保存。

  6. 聊天中会出现一张卡片:将此应用的数据迁移到 Supabase,并列出它找到的内容,比如“6 张表 · 214 行 · 3 个账户 · 你确认后才会进行更改”。卡片还会说明哪些内容会保留在原处。

  7. 点击迁移我的应用(或点击暂不,稍后再决定)。

接下来,卡片会实时显示每一个步骤:

  1. 正在检查连接
  2. 正在读取应用数据
  3. 正在 Supabase 中创建表
  4. 正在复制行
  5. 正在检查数据是否完整
  6. 正在将应用连接到 Supabase
  7. 正在修改应用代码

完成后,卡片会显示你的应用现已在 Supabase 上运行,后端云服务 中的数据库卡片会标为位于 Supabase。

哪些内容会迁移,哪些留在 MonstarX?

Section titled “哪些内容会迁移,哪些留在 MonstarX?”
会怎样
表和数据行复制到 Supabase,包括表之间的关联、索引和 ID 计数器。
账户随数据一起迁移,包括密码,并继续正常使用。登录方式本身保持应用现在的做法。
上传的文件保留在 MonstarX 的文件存储中,所有指向它们的链接都继续有效。
应用的代码MonstarX 会把与数据库交互的部分改写为适用于 Postgres 的代码,这是它自己发起的一次构建请求。
MonstarX 中的旧副本原样保留,方便你迁回。

目前还不支持把登录迁移到 Supabase Auth,或把文件迁移到 Supabase Storage。

  • 所有数据行都到位之前,什么都不会改变。 MonstarX 会在把应用切换过去之前,核对两边的行数。如果行数不一致(比如迁移期间有人在使用应用),迁移就会停止,你的应用会保持原样。
  • 失败或停止的迁移会自动清理。 它只会删除自己创建的表,并在卡片上说明。你也可以点击卡片上的停止,自己停止迁移。
  • 项目会暂时等待。 迁移期间,新的请求会在队列中等待,和构建时一样。
  • 行级安全已开启。 MonstarX 在 Supabase 中创建的每张表都开启了行级安全(RLS),所以没有人能通过 Supabase 的公开 API 读取或修改数据。应用则通过自己的私有连接访问数据。

可以。打开 后端云服务,点击数据库卡片上的迁回,然后确认。MonstarX 会把所有内容复制回自己的数据库,恢复应用最初使用的列类型,并再次改写代码。你的 Supabase 项目会保留其中的表,不会删除任何内容。

  • 应用正在使用 Supabase 时,无法断开 Supabase。 MonstarX 会拒绝,因为那样应用就没有数据库了。请先迁回。
  • 新的密钥必须指向同一份数据。 如果你更新了连接字符串,它必须连接到存有应用表的那个数据库。
  • Supabase 和 Railway 只能二选一。 要从其中一个换到另一个,请先迁回 MonstarX 的数据库。详见 Railway。
  • 导出和发布的应用会直接连接。 无论在预览中还是发布后,应用都会自己连接 Supabase,所以导出的副本可以独立运行。
我的用户需要重新注册吗?

不需要。他们的账户和密码会和其他数据一起迁移到 Supabase,并继续正常使用。

迁移后数据会同时存在两个地方吗?

不会。应用只读写 Supabase。MonstarX 会原样保留旧副本,以备你迁回,但应用不再使用它。

应该用哪个连接字符串?

在 Supabase 中点击 Connect,复制 Transaction pooler 连接字符串,并把 [YOUR-PASSWORD] 替换成你的数据库密码。

可以用一个已经有数据的 Supabase 项目吗?

请使用空白项目。如果项目中已经有与应用表同名且含有数据的表,MonstarX 会拒绝使用,这样你的任何数据都不会被覆盖。

迁移要花钱吗?

复制数据不收费。之后的代码改写是一次普通的构建请求;Supabase 会按它自己的价格向你的 Supabase 账户收费。