RaisFastRaisFast
Content Types

字段类型

17 种字段类型、通用选项、类型专属配置和验证规则。

内容类型支持 17 种字段类型。每个字段通过 [[fields]] 定义,包含 field_type 和可选约束。

字段类型一览

类型SQLiteMySQLPostgreSQL适用场景
textTEXTVARCHAR(255)VARCHAR(255)短文本 — 标题、名称、URL
richtextTEXTTEXTTEXT长文本 — HTML、Markdown
integerINTEGERINTINTEGER32 位整数
bigintINTEGERBIGINTBIGINT64 位整数
decimalTEXTDECIMAL(16,4)NUMERIC(16,4)精确小数 — 价格、金额
floatREALDOUBLEDOUBLE PRECISION浮点数
booleanBOOLEANTINYINT(1)BOOLEAN布尔值
dateTEXTDATEDATE日期(ISO 8601)
datetimeTEXTDATETIMETIMESTAMPTZ(0)时间戳(ISO 8601)
timeTEXTTIMETIMETZ时间(ISO 8601)
emailTEXTVARCHAR(255)VARCHAR(255)邮箱地址(格式验证)
passwordTEXTVARCHAR(255)VARCHAR(255)密码字符串
enumTEXTVARCHAR(255)VARCHAR(255)固定值列表
uidTEXTVARCHAR(255)VARCHAR(255)自动生成的 slug / UID
jsonTEXTJSONJSONB任意结构化数据
mediaTEXTVARCHAR(255)VARCHAR(255)文件 / 图片上传
relationINTEGERBIGINTBIGINT关联记录引用

通用选项

所有字段类型共享以下选项:

[[fields]]
name = "title"
field_type = "text"
required = true
unique = true
default = "Untitled"
private = false
immutable = false
label = "Title"
description = "The display title"
max_length = 200
min = 0
max = 100
pattern = "^[A-Z]"
选项类型默认值说明
requiredboolfalse创建时必填
uniqueboolfalse唯一约束
defaultany默认值(字符串、数字、布尔、null)
privateboolfalse公开 API 隐藏,仅管理 API 可见
immutableboolfalse创建后不可修改
labelstring管理后台显示标签
descriptionstring字段描述
max_lengthint字符串最大长度
minfloat数值最小值
maxfloat数值最大值
patternstring正则验证模式

类型专属选项

enum

必须提供 enum_values

[[fields]]
name = "priority"
field_type = "enum"
enum_values = ["low", "medium", "high"]
default = "medium"

uid

从另一个字段自动生成 URL 安全的 slug:

[[fields]]
name = "slug"
field_type = "uid"
target_field = "title"
unique = true

media

控制接受的文件类型和数量:

[[fields]]
name = "cover"
field_type = "media"
media_config = { accept = ["image/*"], max_count = 1 }
选项说明
acceptMIME 类型模式数组(如 ["image/*", "application/pdf"]
max_count最大文件数量(默认 1)

relation

详见 关联关系

[[fields]]
name = "author"
field_type = "relation"
relation = { relation_type = "many_to_one", target = "users" }

验证规则

系统在每次创建和更新时自动验证输入:

检查时机方式
required创建字段必须存在且非空
immutable更新更新请求中不能包含该字段
类型检查创建 / 更新值类型必须匹配字段类型
enum_values创建 / 更新值必须在允许列表中
max_length创建 / 更新字符串长度不能超限
min / max创建 / 更新数值范围验证
pattern创建 / 更新值必须匹配正则表达式
unique创建 / 更新数据库唯一性检查(更新时排除自身)

验证失败返回 422 Unprocessable Entity,附带字段级详情:

{
  "error": "Validation failed",
  "details": {
    "email": "must be a valid email address",
    "age": "must be greater than or equal to 18"
  }
}

索引

在字段之外单独定义数据库索引:

[[indexes]]
fields = ["slug"]
unique = true

[[indexes]]
fields = ["status", "created_at"]
选项类型说明
fieldsstring[]要索引的列名
uniquebool是否为唯一索引(默认 false)

On this page