把应用的数据存到你自己的 Supabase
要点在“后端 → 云服务”中用项目的连接字符串连接 Supabase。MonstarX 会统计你的表、数据行和账户;点击“迁移我的应用”后,它会把所有内容复制到 Supabase,核对每一行是否都已到位,把应用指向 Supabase,并改写代码。之后你的数据只存放在 Supabase 中;点击“迁回”即可把数据迁回来。
每个 MonstarX 应用都自带数据库,用来保存预约、订单、注册信息等内容。如果你更希望把这些信息放在你自己的 Supabase 项目中(一款流行的托管 Postgres 数据库),MonstarX 可以替你把数据迁移过去,并修改应用来使用它。
应用的数据同一时间只存放在一个地方:要么是 MonstarX 的数据库,要么是你的数据库,不会两者兼有。所以连接 Supabase 是一次迁移,而不是复制一份。
什么时候该用自己的 Supabase?
Section titled “什么时候该用自己的 Supabase?”在以下情况下选择它:
- 你的公司已经在用 Supabase,或者规定客户数据必须存放在公司自己的账户中。
- 你想直接在 Supabase 的控制台、SQL 编辑器或报表工具中查看数据。
- 你想自己管理数据库的备份和访问权限。
如果以上都不适用,MonstarX 自带的数据库是更简单的选择:无需任何设置,也不用单独付费。详见应用的数据库。
- 创建一个新的空白 Supabase 项目。MonstarX 会自己创建表;如果项目中已经有同名且含有数据的表,MonstarX 会拒绝使用。
- 准备好你的数据库密码,这是你在创建 Supabase 项目时设置的。
- 如果应用的数据存放在 Firestore 中(详见 Firebase),请先把它切换回 MonstarX 数据库。
如何把应用的数据迁移到 Supabase?
Section titled “如何把应用的数据迁移到 Supabase?”-
在 Supabase 中打开你的项目,点击 Connect。复制 Transaction pooler 连接字符串,并把其中的
[YOUR-PASSWORD]替换成你的数据库密码。 -
在 MonstarX 中打开项目,点击顶部栏中的后端,再点击云服务。
-
在连接器中点击 Supabase 旁的连接;或者在此应用的数据存储位置中选择 Supabase(Postgres),会打开同一个表单。
-
把连接字符串粘贴到连接字符串中。其他字段都是选填的:
- 项目 URL 和匿名密钥:仅在应用还需要使用 Supabase 自身的 API 或存储时填写。
- 服务角色密钥:请务必保密。可以留空:它用于把登录或文件迁移到 Supabase,而迁移目前还不支持这项操作。
-
点击连接 Supabase。MonstarX 会先确认能在其中创建表,然后才保存。
-
聊天中会出现一张卡片:将此应用的数据迁移到 Supabase,并列出它找到的内容,比如“6 张表 · 214 行 · 3 个账户 · 你确认后才会进行更改”。卡片还会说明哪些内容会保留在原处。
-
点击迁移我的应用(或点击暂不,稍后再决定)。
接下来,卡片会实时显示每一个步骤:
- 正在检查连接
- 正在读取应用数据
- 正在 Supabase 中创建表
- 正在复制行
- 正在检查数据是否完整
- 正在将应用连接到 Supabase
- 正在修改应用代码
完成后,卡片会显示你的应用现已在 Supabase 上运行,后端云服务 中的数据库卡片会标为位于 Supabase。
哪些内容会迁移,哪些留在 MonstarX?
Section titled “哪些内容会迁移,哪些留在 MonstarX?”| 会怎样 | |
|---|---|
| 表和数据行 | 复制到 Supabase,包括表之间的关联、索引和 ID 计数器。 |
| 账户 | 随数据一起迁移,包括密码,并继续正常使用。登录方式本身保持应用现在的做法。 |
| 上传的文件 | 保留在 MonstarX 的文件存储中,所有指向它们的链接都继续有效。 |
| 应用的代码 | MonstarX 会把与数据库交互的部分改写为适用于 Postgres 的代码,这是它自己发起的一次构建请求。 |
| MonstarX 中的旧副本 | 原样保留,方便你迁回。 |
目前还不支持把登录迁移到 Supabase Auth,或把文件迁移到 Supabase Storage。
迁移过程中我的数据安全吗?
Section titled “迁移过程中我的数据安全吗?”- 所有数据行都到位之前,什么都不会改变。 MonstarX 会在把应用切换过去之前,核对两边的行数。如果行数不一致(比如迁移期间有人在使用应用),迁移就会停止,你的应用会保持原样。
- 失败或停止的迁移会自动清理。 它只会删除自己创建的表,并在卡片上说明。你也可以点击卡片上的停止,自己停止迁移。
- 项目会暂时等待。 迁移期间,新的请求会在队列中等待,和构建时一样。
- 行级安全已开启。 MonstarX 在 Supabase 中创建的每张表都开启了行级安全(RLS),所以没有人能通过 Supabase 的公开 API 读取或修改数据。应用则通过自己的私有连接访问数据。
可以迁回 MonstarX 的数据库吗?
Section titled “可以迁回 MonstarX 的数据库吗?”可以。打开 后端云服务,点击数据库卡片上的迁回,然后确认。MonstarX 会把所有内容复制回自己的数据库,恢复应用最初使用的列类型,并再次改写代码。你的 Supabase 项目会保留其中的表,不会删除任何内容。
- 应用正在使用 Supabase 时,无法断开 Supabase。 MonstarX 会拒绝,因为那样应用就没有数据库了。请先迁回。
- 新的密钥必须指向同一份数据。 如果你更新了连接字符串,它必须连接到存有应用表的那个数据库。
- Supabase 和 Railway 只能二选一。 要从其中一个换到另一个,请先迁回 MonstarX 的数据库。详见 Railway。
- 导出和发布的应用会直接连接。 无论在预览中还是发布后,应用都会自己连接 Supabase,所以导出的副本可以独立运行。
我的用户需要重新注册吗?
不需要。他们的账户和密码会和其他数据一起迁移到 Supabase,并继续正常使用。
迁移后数据会同时存在两个地方吗?
不会。应用只读写 Supabase。MonstarX 会原样保留旧副本,以备你迁回,但应用不再使用它。
应该用哪个连接字符串?
在 Supabase 中点击 Connect,复制 Transaction pooler 连接字符串,并把 [YOUR-PASSWORD] 替换成你的数据库密码。
可以用一个已经有数据的 Supabase 项目吗?
请使用空白项目。如果项目中已经有与应用表同名且含有数据的表,MonstarX 会拒绝使用,这样你的任何数据都不会被覆盖。
迁移要花钱吗?
复制数据不收费。之后的代码改写是一次普通的构建请求;Supabase 会按它自己的价格向你的 Supabase 账户收费。