应用的数据库
要点MonstarX 构建的每个应用都有自己的私有数据库,在第一次构建时自动创建。打开“后端 → 数据库”,可以查看每张表、表中的行和迁移记录,还能运行只读 SQL。要添加或修改记录,请使用“管理”标签页,或在聊天中提出。预览和已发布的应用共用同一份数据,恢复版本也不会影响数据。
数据库是应用保存信息的地方:咖啡店的菜单、顾客下的订单、用户发布的菜谱、他们登录用的账户。你在 MonstarX 中创建的每个应用都有自己的私有数据库,在第一次构建时创建,其他任何应用都读不到它。
你完全不需要自己设计数据库。当你提出的功能需要记住某些信息时,MonstarX 会添加所需的表,并写好读写这些表的代码。
在哪里查看应用的数据?
Section titled “在哪里查看应用的数据?”-
打开项目,点击顶部栏中的后端。
-
点击数据库。左侧的表列出了所有表及各自的行数。
-
点击某张表即可查看其中的行。MonstarX 会显示前 50 行。
列表顶部的方框会显示数据库所在的位置和名称。表下方的迁移列出了到目前为止对数据库做过的每一次变更(下文会详细介绍)。应用被使用一段时间后,点击表旁的刷新箭头,即可重新统计行数。
哪些表是一开始就有的?
Section titled “哪些表是一开始就有的?”在你提出任何需求之前,每个应用都已有四张表:user、session、account 和 verification。它们保存在应用中注册的用户及其登录信息,详见用户账户。其他所有表都是 MonstarX 为你的应用创建的,比如 menu_items 或 recipes。
我可以自己运行 SQL 吗?
Section titled “我可以自己运行 SQL 吗?”可以,用来查询数据。SQL 是与数据库打交道的语言。在顶部的输入框中输入查询,点击运行,结果会以表格形式显示在下方。
例如:
SELECT title, country_code, tags FROM recipes ORDER BY created_at DESC LIMIT 5需要了解:
- 这个输入框是只读的。它一次只运行一条语句,而且只运行读取类语句:
SELECT、WITH、PRAGMA和EXPLAIN。任何会修改数据的语句,比如INSERT、UPDATE、DELETE、DROP,都会被拒绝,所以你不会不小心把应用弄坏。 - 一次查询最多显示 200 行。
PRAGMA table_info(recipes)可以列出一张表的所有列。- 如果应用的数据存放在 Supabase 或 Railway Postgres 中,输入框支持
SELECT、WITH、TABLE和EXPLAIN。
如何添加、修改或删除记录?
Section titled “如何添加、修改或删除记录?”有两种简单的方法,都不需要写 SQL:
- “管理”标签页。 每个应用在预览旁边都有一个管理后台。它用通俗的业务用语,把你的表变成简单的表单,你可以在里面添加、编辑和删除记录,还可以撤销。修改会立即在应用中生效,而且不消耗额度。详见应用的管理后台。
- 聊天。 直接说出你的需求,比如“在咖啡菜单里加一款澳白,价格 $4.50”或“删除测试订单”。在聊天模式下,MonstarX 还可以查看你的数据并回答相关问题,而不做任何修改,详见构建、规划和聊天模式。
MonstarX 构建时会对数据库做什么?
Section titled “MonstarX 构建时会对数据库做什么?”当某个功能需要地方保存信息时,MonstarX 会编写一个迁移:一组带编号的指令,用来创建或修改表,比如 0001_create_menu_and_orders。它会把迁移应用到你的数据库,并和代码一起保存,确保表和代码始终一致。有些迁移会添加初始数据,比如一份示例菜单(上面例子中的 0002_seed_recipes)。
后端中的迁移列表按顺序列出了已运行的每一次迁移。0000_monstarx_auth 是 MonstarX 自带的迁移,用来创建账户相关的表。
修改或恢复应用时,数据会保留吗?
Section titled “修改或恢复应用时,数据会保留吗?”会。数据和代码是分开存放的:
- 新的构建会保留每一行数据。当构建需要修改某张表(比如新增一列)时,会通过迁移来完成,并保留已有的数据。
- 恢复版本只会恢复代码的旧版本,应用数据保持不变。详见版本。
- 预览和已发布的应用使用同一个数据库。 你在测试预览时下的订单也会出现在线上应用中,反之亦然。这也是为什么测试时添加的示例数据会被你的顾客看到。
可以把数据存到我自己的数据库吗?
Section titled “可以把数据存到我自己的数据库吗?”可以。在 后端云服务 中,可以通过此应用的数据存储位置选择:
- MonstarX 数据库:默认选项,无需任何设置。
- Supabase(Postgres):你自己的 Supabase 项目。Postgres 是一款很多团队都在用的流行数据库。详见 Supabase。
- Railway(Postgres):你自己的 Railway 数据库。详见 Railway。
- Firestore(你的 Firebase 项目):把应用的记录存放在 Firebase 中。详见 Firebase。
MonstarX 会把表、数据行和账户复制过去,并改写应用以使用新的存储位置。之后你也可以通过迁回换回来。当数据存放在 Firestore 中时,数据库分区显示的是 Firestore 集合而不是表(只读,由应用负责写入)。
可以直接在数据库分区里编辑某一行吗?
不可以,数据库分区只能读取。请在管理标签页中编辑记录,它就像一个支持撤销的简易表格;也可以在聊天中让 MonstarX 修改。详见应用的管理后台。
为什么我的测试订单出现在了线上应用中?
预览和已发布的应用共用一个数据库,所以测试时添加的任何内容都是真实数据。测试结束后,请在“管理”标签页中删除测试数据。
恢复旧版本会删除我的数据吗?
不会。恢复版本只替换代码,数据库中的每一行都保持原样。
可以下载我的数据吗?
你可以用 SELECT 查询读取任意一张表并复制结果,也可以把数据迁移到你自己的 Supabase 或 Railway Postgres 数据库,在那里你拥有完整的访问权限。
这是什么类型的数据库?
每个应用都有一个私有的 SQL 数据库。SQL 是数据库的标准语言,任何开发者都能上手。如果你更喜欢 Postgres,可以把数据迁移到 Supabase 或 Railway。
为什么我看到应用是导入的提示?
MonstarX 不会为导入的应用创建数据库:它的数据存放在它自己的代码所指定的地方。它读取的密钥在密钥中。