ObjectOS
参考

字段类型

你可以在对象上声明的所有字段类型 —— 存储什么、接受哪些选项、在 REST、Console 和 AI Builder 中如何呈现。

字段类型

48 个内置字段类型,按家族分组。完整的 Zod schema 在 packages/spec/src/data/field.zod.ts —— 本页为工作摘要。

核心属性(每个字段都有)

属性类型默认值用途
namestring (snake_case)机器标识符 —— REST 路径段、SQL 列
labelstringConsole 中的显示标签
typeFieldType见下方类型表
requiredbooleanfalseNOT NULL 约束
uniquebooleanfalse唯一索引
searchablebooleanfalse/api/v1/search 建索引
multiplebooleanfalse存储值的数组
defaultValueunknown初始值(字面量或 CEL)
columnNamestring= name覆盖物理 DB 列
hiddenbooleanfalse在默认 Console 视图中隐藏
readonlybooleanfalse表单中禁用
systembooleanfalse自动注入(id、created_at……)
indexbooleanfalse创建 DB 索引
externalIdbooleanfalse可用作外部键 upsert
inlineHelpTextstring提示/帮助文本
conditionalRequiredP 谓词CEL 为真时必填
trackHistorybooleanfalse将值变更渲染为记录活动时间线上可读的条目(ADR-0052)

文本家族

类型用途关键选项
text短字符串maxLengthminLength
textarea多行maxLength
email邮箱格式校验;小写化
urlURL格式校验
phone电话E.164
password单向密钥由 auth 子系统哈希;GET 永不返回
secret可逆密钥(API key、token、数据库密码)通过加密提供方在静态时加密,存为不透明引用,读取时脱敏。Fail-closed —— 未配置提供方时,写入会抛错而非以明文持久化
markdownmarkdown 正文在 Console 预览中渲染
html清洗后的 HTML写入时经 DOMPurify
richtext所见即所得Console 编辑器 + 序列化 JSON

数字

类型用途关键选项
number浮点minmaxprecisionscale
currency货币currencyConfig: { precision, currencyMode: 'fixed' | 'dynamic', defaultCurrency }
percent0–100 %minmaxscale

integerdecimal 不是独立类型 —— 整数用 numberscale: 0,定点小数用 precision+scale

日期/时间

类型存储说明
date日历日期无时区
datetime瞬时UTC
time时钟时间无日期

逻辑

类型说明
boolean复选框
toggle等同 boolean,开关 UI

选择

类型说明
select单选 —— 内联声明选项或引用 picklist
multiselect多选,以数组存储
radio以单选按钮渲染的 select UI 别名
checkboxes以复选框渲染的 multiselect UI 别名

选项形状:

options: [
  { value: 'low',    label: 'Low' },
  { value: 'high',   label: 'High',   color: '#e02' },
  { value: 'urgent', label: 'Urgent', color: '#c00' }
]

关系

类型基数语义
lookup多对一松引用;删除父记录默认不会删除子记录
master_detail多对一,级联子记录不能脱离父记录;权限从父继承
tree自引用层级(同一对象上的 parent_id)

常用选项:

{
  type: 'lookup',
  reference: 'account',                       // 目标对象名
  referenceFilters: ['status:active'],        // 收窄查找选择器
  deleteBehavior: 'set_null'                  // 'set_null' | 'cascade' | 'restrict'
}

计算

类型作用关键选项
formula派生值,读取或重新计算时求值expression: F\record.qty * record.unit_price`` —— 见 CEL
summary子关系上的汇总summaryOperations: { object, field, function }count | sum | avg | min | max
autonumber自动递增显示编号format(如 TKT-{0000})、startAt

公式示例:

{
  name: 'profit_margin',
  type: 'formula',
  expression: F`(record.revenue - record.cost) / record.revenue * 100`
}

媒体

类型用途关键选项
image图像附件fileAttachmentConfig(见下)
file任意文件
avatar头像方形裁剪,合理默认
video视频上传时长 + 缩略图捕获
audio音频波形预览
fileAttachmentConfig: {
  maxSize: 10_000_000,                        // 字节
  allowedTypes: ['image/png','image/jpeg'],
  virusScan: true,
  storageProvider: 's3',                       // 见 Configure → Storage
  imageValidation: { minWidth: 200, maxWidth: 4096, generateThumbnails: ['sm','md','lg'] }
}

结构化

类型存储说明
json任意 JSONPostgres 上存为 JSONB
composite带命名字段的子记录内联结构,非独立表
repeatercomposite 值数组无子对象的一对多

增强 UI

类型说明
location经纬度 + 精度
address街/市/区/邮编/国家
code源代码字段 —— languagethemelineNumbers
colorcolorFormat: 'hex' | 'rgb' | 'rgba' | 'hsl'presetColors[]
rating1–N 星 —— maxicon
slider带滑块 UI 的有界数字
signature手绘签名,存为图像
qrcode将值渲染为 QR 或条形码(EAN / UPC / Code128)
progress派生百分比,以进度条渲染
tags带自动完成的自由标签数组
vector嵌入列 —— vectorConfig: { dimensions, distanceMetric: 'cosine' | 'euclidean', indexed, indexType: 'hnsw' | 'ivfflat' }

系统字段(每个对象自动注入)

字段类型说明
idtext (ULID)主键
created_atdatetimeUTC 插入时间
updated_atdatetimeUTC 最后写入时间
created_bylookup → user谁插入
updated_bylookup → user谁最后写入
versioninteger乐观并发 token

你不声明它们 —— 通过 ObjectSpec.systemFields: false 按对象退出(很少是好主意)。

字段如何流经技术栈

*.object.ts (field spec)

   ├─► Postgres / MySQL / SQLite column + index + constraint
   ├─► REST: validated on POST/PATCH, exposed on GET
   ├─► Console: form widget + list column
   ├─► AI Builder: tool argument schema (so the AI knows what to ask)
   └─► Audit: change-tracked if `trackHistory: true`

参见

On this page