通过使用 rayfin up 或 rayfin up db apply对数据库应用 Rayfin 实体的更改,并验证模式是否到达了服务器。
编辑一个 rayfin/data/ 类本身不会改变部署的数据库。 Rayfin 仅当你明确应用这些更改时,才会读取你的实体并生成 Data API Builder (DAB) 配置。
使用rayfin up进行应用更新
每当你想将最新的实体变更部署到 Fabric 应用时,都可以执行npx rayfin up:
npx rayfin up
此命令:
- 同步运行时设置。
- 应用根据
rayfin/data/中的装饰器生成的数据库架构。 - 启用
staticHosting时,构建并部署静态内容。
每次更改 rayfin/data/ 中的文件后,都运行该命令。 第一次部署后,后续运行会更新同一部署,而不是创建新的部署。
仅应用数据库架构变更
当你想应用数据库模式而不同步运行时设置或部署静态内容时,可以使用 npx rayfin up db apply :
npx rayfin up db apply
当你使用 npm run dev 运行前端、后端已部署完成,并且希望独立迭代 schema 时,这个高级子命令就非常有用。
如果更改可能导致数据丢失,比如丢弃列或重命名表,CLI会阻止该操作并描述潜在影响。 在您审查操作并接受数据丢失后,应用以下变更:--force
npx rayfin up db apply --force
Caution
该 --force 选项可能导致永久性数据丢失。 只有在你审查 CLI 报告的每一项操作后才使用。
验证已部署的模式
Warning
成功 rayfin up 或 rayfin up db apply 命令并不能保证你的前端能立即查询新的或更改的实体。 在测试实体之前,先确认部署是否正常。
在对 rayfin/data/ 进行任何更改后,检查部署情况:
npx rayfin up status
如果部署恢复正常后,新的或更改的实体仍然返回 GraphQL 错误,显式应用该模式,然后再次测试该实体:
npx rayfin up db apply
只有当 CLI 报告存在可能具有破坏性的更改,且您接受数据丢失时,才添加 --force。
对于机器可读部署状态,请使用 JSON 输出:
npx rayfin up status --json
你可以在脚本中使用该 JSON 响应,在运行进一步检查之前等待部署达到健康状态。
遵循典型的模式工作流程
# 1. Edit an entity, such as rayfin/data/Todo.ts.
# 2. Apply the application changes.
npx rayfin up
# 3. Verify that the deployment is healthy.
npx rayfin up status
# 4. If the changed entity still fails, apply the schema explicitly.
npx rayfin up db apply
如果第4步报告某项操作可能具有破坏性,请先检查该操作,然后再使用 --force 重新运行该命令。
排查架构变更问题
GraphQL 返回内部服务器错误
检查受影响实体上的每个 @text() 字段是否有缺失 max 值。 在 Microsoft SQL Server 中,不带有 max 的 @text() 会生成一个 NVARCHAR(MAX) 列,这可能会阻碍 GraphQL 架构的生成。
显式指定最大长度,然后应用该架构:
@text({ max: 200 })
title!: string;
npx rayfin up db apply --force
使用 --force 前,请查看已报告的操作。
CLI报告了一个潜在的破坏性变化
检查列出的操作,包括已删除的列、缩窄的类型和重命名的表。 确认数据丢失可接受后,再用 重新 --force 执行命令。
架构应用失败
运行 npx rayfin up status,并等待服务状态恢复正常后,再次尝试执行 schema apply。
该数据服务没有方言
当 services.data.enabled 为 true 时,在 rayfin/rayfin.yml 中配置 dialect: mssql。
services:
data:
enabled: true
dialect: mssql
使用AI提示
将以下提示复制到 GitHub Copilot 或其他有权限访问你项目和终端的编码代理中:
I just added a new field to an entity in my Rayfin project's rayfin/data/ folder. Run
`npx rayfin up` to apply the change, then run `npx rayfin up status` to confirm the
deployment is healthy. If querying the changed entity still fails after that, run
`npx rayfin up db apply` and check again. Review any potentially destructive operations with me before using `--force`.