跳转到内容

应用的数据库

要点MonstarX 构建的每个应用都有自己的私有数据库,在第一次构建时自动创建。打开“后端 → 数据库”,可以查看每张表、表中的行和迁移记录,还能运行只读 SQL。要添加或修改记录,请使用“管理”标签页,或在聊天中提出。预览和已发布的应用共用同一份数据,恢复版本也不会影响数据。

数据库是应用保存信息的地方:咖啡店的菜单、顾客下的订单、用户发布的菜谱、他们登录用的账户。你在 MonstarX 中创建的每个应用都有自己的私有数据库,在第一次构建时创建,其他任何应用都读不到它。

你完全不需要自己设计数据库。当你提出的功能需要记住某些信息时,MonstarX 会添加所需的表,并写好读写这些表的代码。

  1. 打开项目,点击顶部栏中的后端。

  2. 点击数据库。左侧的表列出了所有表及各自的行数。

  3. 点击某张表即可查看其中的行。MonstarX 会显示前 50 行。

列表顶部的方框会显示数据库所在的位置和名称。表下方的迁移列出了到目前为止对数据库做过的每一次变更(下文会详细介绍)。应用被使用一段时间后,点击表旁的刷新箭头,即可重新统计行数。

在你提出任何需求之前,每个应用都已有四张表:user、session、account 和 verification。它们保存在应用中注册的用户及其登录信息,详见用户账户。其他所有表都是 MonstarX 为你的应用创建的,比如 menu_items 或 recipes。

可以,用来查询数据。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。

有两种简单的方法,都不需要写 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 不会为导入的应用创建数据库:它的数据存放在它自己的代码所指定的地方。它读取的密钥在密钥中。