Zion中状态字段须用枚举类型定义且不可动态扩展,数据模型中引用需严格匹配枚举成员,状态变更动作须校验当前状态并仅允许合法流转。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

给数据加状态标记时,函子Zion需明确区分状态字段的语义、可变性与序列化行为,不能简单套用普通字符串字段。
定义状态枚举类型
在Zion模块的schema定义文件中,声明一个独立的enum类型,例如StatusEnum,显式列出所有合法状态值:PENDING、APPROVED、REJECTED、ARCHIVED。
这一步必须做,否则后续校验和类型推导会失效;Zion不支持运行时动态扩展枚举值,【枚举定义后不可增删成员】。
在数据模型中引用状态字段
方法一:直接嵌入enum引用
在目标model(如Order)的fields配置中,添加status字段,type设为StatusEnum,required设为true。
方法二:带默认值与描述的写法
status: { type: StatusEnum, default: 'PENDING', description: '订单初始状态,等待人工审核' }。
注意:default值必须是StatusEnum已声明的成员之一,填错会导致Zion启动时报schema编译失败。
控制状态流转逻辑
第一步:在Zion的action定义中,为每个状态变更动作单独建一个函数,例如approveOrder、rejectOrder。
第二步:每个action内部调用this.update()时,只允许将status字段更新为目标状态,禁止直接赋值任意字符串。
第三步:在action入口处用switch语句校验当前status是否允许进入该动作——比如REJECTED状态不能再次触发rejectOrder。
Zion不拦截非法赋值,但业务逻辑层若跳过校验,会导致状态机混乱且无法回溯。


















