ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

NocoBase 邮箱(Email)字段详解:字段定义、格式校验与源码实现

NocoBase 邮箱(Email)字段详解:字段定义、格式校验与源码实现 NocoBase 邮箱Email字段详解字段定义、格式校验与源码实现【免费下载链接】nocobaseNocoBase is an open-source AI no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.项目地址: https://gitcode.com/GitHub_Trending/no/nocobase在 NocoBase 中邮箱Email字段用于在数据表中保存邮箱地址并以string类型存储、以email界面类型渲染同时内置邮箱格式校验。本文基于 NocoBase 官方文档与仓库源码完整讲解邮箱字段的创建配置、字段特性、编辑与删除方式、页面配置用法并结合 邮箱字段接口实现 剖析其默认值、校验选项与筛选操作符的底层来源帮助你在建模时准确使用邮箱字段并理解其行为边界。一、邮箱字段是什么适合哪些场景NocoBase 中的邮箱字段用于保存邮箱地址。它适合客户邮箱、员工邮箱、供应商邮箱等联系方式。与普通单行文本单行文本字段相比邮箱字段提供更明确的邮箱语义和格式校验页面录入时会自动按邮箱格式校验输入内容而单行文本只保存普通短文本、不做邮箱格式约束。如果内容不是邮箱地址只是普通联系人信息选择单行文本更合适。邮箱字段适合这些业务场景客户邮箱、联系人邮箱员工邮箱、登录联系邮箱供应商邮箱、服务邮箱通知收件地址。从源码结构看邮箱字段在字段接口注册中被归类为basic基础类型排序值为 4因此它会出现在「Configure fields」页面基础字段分组的前列位置具体注册逻辑见 EmailFieldInterface 类。二、创建邮箱字段与配置项说明在数据表的「Configure fields」页面中点击「Add field」选择「邮箱」即可创建邮箱字段。创建表单中的核心配置项如下配置说明Field interface字段的界面类型。邮箱对应email决定页面中如何录入和展示。Field display name字段在界面中显示的名称比如「客户邮箱」「联系人邮箱」「收件邮箱」。建议使用业务人员能直接理解的名称。Field name字段标识名称用于 API、关系字段、权限、工作流等内部引用。创建后通常不再修改只支持字母、数字和下划线并且必须以字母开头。Field type字段在数据层的类型。邮箱字段默认是string。Default value默认值。新增记录时如果用户没有填写可以自动带出默认值。Validation rules校验规则。通常需要启用邮箱格式校验也可以配置必填。Description字段说明。适合写字段含义、填写要求、数据来源或维护人。这些配置项并非凭空而来它们在客户端字段配置表单中有明确的 schema 定义Field display name 与 Field name由defaultProps统一定义字段属性 schemauiSchema.title对应显示名称且必填name对应字段标识使用uid校验器约束命名规则字母、数字、下划线且必须以字母开头并通过x-disabled: {{ !createOnly }}实现「创建后可修改、创建后不可修改」——即字段创建完成后 Field name 在编辑表单中锁定。默认值能力EmailFieldInterface中声明hasDefaultValue trueemail.ts因此创建表单才会展示 Default value 配置。唯一值Unique邮箱字段的properties在defaultProps之外额外引入了unique属性email.ts其定义见 unique 属性。勾选后会在数据库层面约束邮箱值唯一适合保证一个客户只登记一个邮箱等场景该选项仅在创建主数据库字段时可用。注意字段名创建后会被页面区块、权限、工作流和 API 引用。创建前先确认命名避免后续修改带来配置调整成本。三、字段特性从源码看邮箱字段的默认行为邮箱字段的默认行为在 EmailFieldInterface 中一次性声明逐项对应如下特性说明源码依据默认 Field interfaceemail。name email默认 Field typestring。default { type: string, ... }可选 Field type仅string。availableTypes [string]页面组件编辑模式使用输入框并按邮箱格式校验。uiSchema中x-component: Input加x-validator: email筛选支持文本类筛选包含、不包含、是、不是、为空、不为空。filterable.operators复用operators.string排序支持在表格区块中排序。sortable true校验支持邮箱格式、必填等校验。validationType string加availableValidationOptions可作为标题字段可以作为记录标题展示。titleUsable true几个值得展开的细节1. 录入组件与格式校验的联动邮箱字段的default配置email.ts为default { type: string, uiSchema: { type: string, x-component: Input, x-validator: email, }, };也就是说创建邮箱字段时NocoBase 会同时生成两部分定义数据层类型string决定数据库列类型以及 UI schema决定页面组件。x-validator: email会把 Formily 的邮箱校验器挂到该字段上用户在表单中输入abc这类不合法内容时会被直接拦截无需额外配置 Validation rules。2. 可选校验规则邮箱字段声明的可用校验选项为availableValidationOptions [min, max, length, email, pattern];在 FieldValidation 组件 中availableValidationOptions会与全局的FIELDS_VALIDATION_OPTIONS中string类型的校验选项做交集交集逻辑见 constants.ts 定义的选项表最终在 Validation rules 配置区只呈现这五类规则min / max字符串长度下限/上限length固定长度email邮箱格式校验pattern正则表达式自定义匹配例如强制要求company.com结尾的邮箱。相比之下单行文本字段的可选规则是[min, max, length, pattern]input.ts不包含email——这正是两者在配置面板上最直观的差异。3. 筛选操作符邮箱字段声明filterable { operators: operators.string }而 operators.string 定义为操作符值是否默认选中包含$includes是不包含$notIncludes否是等于$eq否不是不等于$ne否为空$empty否不为空$notEmpty否因此在筛选区块或筛选操作Filter action中邮箱字段默认展示「包含」操作符可以按domain.com等片段批量筛选记录。4. 表格与看板中的省略号展示EmailFieldInterface的schemaInitialize方法email.ts会在字段渲染进Table或Kanban区块时自动注入x-component-props.ellipsis true。也就是说邮箱这类可能较长的字符串在表格列和看板卡片中默认以省略号截断无需手动配置列宽展示。四、编辑邮箱字段配置创建后点击字段右侧的「Edit」可以编辑邮箱字段配置。编辑字段主要用于调整字段在 NocoBase 中的展示和使用方式比如修改显示名称、说明、默认值、校验规则或字段专属配置。如果字段来自主数据库中已经同步的表编辑时通常是在做字段映射——把数据库字段映射为 NocoBase 的 Field type 和 Field interface。配置允许编辑说明Field display name是修改字段在界面中的显示名称不改变字段标识名称。Field name否字段标识名称创建后通常不能在编辑表单中修改。这一点与源码一致name属性通过x-disabled: {{ !createOnly }}在编辑态禁用properties/index.ts。Field interface条件支持主数据库字段或同步字段在字段映射时可以调整。调整后会影响页面输入、展示和校验方式。Field type条件支持主数据库字段或同步字段在字段映射时可以调整。调整前需要确认已有数据能否按新类型使用。Default value是调整新增记录时的默认值。Validation rules是调整字段校验规则。Description是补充字段含义、填写要求、数据来源或维护人。注意切换 Field type 或 Field interface 不等于简单改一个显示名称。它会影响字段的存储方式、输入组件、校验规则、筛选条件和工作流变量使用方式。已有数据较多时先确认数据格式是否匹配。从源码看Field interface 决定default.uiSchema录入组件与校验器Field type 决定数据库列类型availableTypes [string]限定了邮箱字段只能落在string存储类型上两者共同构成字段在页面和 API 中的完整行为。五、删除邮箱字段点击字段右侧的「Delete」可以删除邮箱字段。主数据库中还可以勾选多个字段后批量删除。删除主数据库中新建的邮箱字段时通常会同时删除数据库中的真实列及该列已有数据。删除从数据库同步或外部数据源映射出的字段时影响范围取决于对应数据源和字段来源。警告删除字段可能影响页面区块、表单、筛选、权限、工作流、API、导入导出和已有数据。删除前先确认字段是否仍被业务配置引用。六、页面配置使用邮箱字段适合在表单、详情和通知流程中使用典型用法包括场景用途表单区块录入邮箱地址email校验器自动拦截非法输入。详情区块展示邮箱地址。筛选区块按邮箱地址筛选记录支持包含/不等于等文本类操作符。工作流和通知作为邮件通知的收件人来源。由于邮箱字段titleUsable true它还可以被用作记录的标题字段在表格首列以标题形式展示邮箱。七、与其他字段的选型对比内容只是普通短文本、不做格式约束选单行文本保存联系电话选手机号保存邮箱地址并需要格式语义选本文的邮箱字段。相关链接字段 — 了解字段的作用、分类和映射逻辑普通表 — 在普通表中创建和管理字段单行文本 — 保存普通短文本手机号 — 保存联系电话邮箱字段接口源码 —EmailFieldInterface的完整定义字符串筛选操作符 — 邮箱字段筛选操作符的定义【免费下载链接】nocobaseNocoBase is an open-source AI no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.项目地址: https://gitcode.com/GitHub_Trending/no/nocobase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表