NocoBase 评论表(Comment Collection):构建评论数据模型与评论区块的完整指南
发布时间:2026/9/14 11:09:19 锦皓数字建站
:构建评论数据模型与评论区块的完整指南`)
NocoBase 评论表Comment Collection构建评论数据模型与评论区块的完整指南【免费下载链接】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 的「评论表」文档系统讲解如何创建、配置和使用评论表Comment Collection并结合nocobase/plugin-comments插件的源码实现深入剖析评论表模板的内置字段定义、评论区块对template comment的识别机制以及createdBy关联数据的加载原理。读完本文你可以独立完成「评论表 业务表关系字段 评论区块」的完整搭建并理解评论区块在底层依赖哪些字段和模板特征。一、评论表是什么评论表适合保存围绕业务记录产生的讨论、反馈和批注。任务评论、审批意见、文章评论、客户反馈都可以用评论表保存。评论表通常不单独作为主业务表使用。更常见的做法是先创建评论表再在业务表中配置关系字段最后在业务记录的详情或弹窗中添加评论区块。评论表由插件 plugin-comments 提供。从源码结构看该插件的表模板定义在前端CollectionTemplate中表模板定义CommentCollectionTemplate声明name comment即在数据模型层评论表通过template: comment这一特征被系统识别服务端插件PluginCommentServer的各生命周期钩子load、install、afterEnable等均为空实现说明评论表的建表、字段维护主要依赖通用的 Collection 机制服务端插件目前只是占位骨架。二、适用场景评论表适合这些业务场景任务、需求、缺陷的协作讨论审批单、工单、合同的处理意见文章、知识库、公告的评论客户反馈、售后跟进、内部备注。共同点是评论本身依附于一条业务记录存在需要记录「谁在什么时间对哪条记录说了什么」并可能形成回复层级。三、使用流程总览评论表通常配合业务表和评论区块使用完整流程为创建评论表用来保存评论内容、回复关系、创建人、创建时间等信息在业务表中创建关系字段关联到评论表。比如在「任务」表中关联「任务评论」表在业务表的详情页或弹窗中添加评论区块用户在评论区块中发表评论或回复评论数据会写入评论表并关联到当前业务记录根据业务需要配置评论表权限控制谁可以查看、创建或删除评论。其中第 3 步的「评论区块」只对评论表生效这一点在源码中有硬性校验见下文「页面配置使用」一节。四、创建评论表4.1 入口与可配置项在主数据库中点击「Create collection」选择「Comment collection」即可创建评论表。下表配置项与源码中configurableProperties的声明一一对应configurableProperties getConfigurableProperties( title, name, inherits, category, description, presetFields, );来源collection-templates/comment.tsx配置说明Collection display nametitle数据表在界面中显示的名称比如「任务评论」「审批意见」「文章评论」。Collection namename数据表的标识名称用于 API、关系字段、权限、工作流等内部引用。Inherits选择要继承的父表。只有主数据库是 PostgreSQL 时可见。Categoriescategory数据表分类。分类只影响数据表管理界面的组织方式不改变数据表结构。Description数据表说明。可以写这个评论表服务于哪个业务对象、由谁维护、评论权限怎么设计。Preset fieldspresetFields预设字段。创建评论表时建议保留系统字段和评论表内置字段。值得注意的是源码中presetFieldsDisabled true这一行collection-templates/comment.tsx#L108它意味着创建评论表时预设字段面板被禁用评论表自带字段集合不可随意裁剪这正是文档中「建议保留系统字段和评论表内置字段」的代码层面依据。4.2 内置字段评论表创建后通常包含这些内置字段。评论区块主要依赖content、createdBy和createdAt展示评论内容、评论人和评论时间。字段字段名说明IDid默认主键字段用于唯一标识一条评论记录。评论内容content保存用户输入的评论正文默认使用 Markdown Vditor 组件。创建时间createdAt自动记录评论创建时间评论区块会用它展示评论时间。创建人createdBy自动记录发表评论的用户评论区块会用它展示评论人。更新时间updatedAt自动记录评论最后一次更新的时间。更新人updatedBy自动记录最后一次更新评论的用户。空间space启用多空间插件后可用用于按空间隔离数据。没有启用多空间时不会出现。注意评论表内置字段通常由评论区块维护不建议随意删除或改成其他业务含义。如果需要保存评论分类、处理状态等信息可以新增业务字段。4.3 从源码看content字段的默认定义模板default.fields中对content字段的完整声明如下collection-templates/comment.tsx#L27-L41default { fields: [ { name: content, type: text, length: long, interface: vditor, deletable: false, uiSchema: { type: string, title: generateNTemplate(Comment Content), interface: vditor, x-component: MarkdownVditor, }, }, ], };这段代码印证并补充了文档中的字段说明type: textlength: long底层为长文本类型适合承载较长的评论正文与富文本标记interface: vditor与x-component: MarkdownVditor即文档所述「默认使用 Markdown Vditor 组件」的具体落地方式deletable: falsecontent字段在界面上不可删除从机制上保证评论区块始终有字段可读写。此外源码中还保留了一段被注释掉的parentId/parent/children树形关系字段定义collection-templates/comment.tsx#L42-L96从源码结构看回复层级关系并非由表模板强制内置而是由评论区块在运行时基于业务表与评论表的关系来组织这也解释了为什么「建立关联关系」是必须的手动步骤。4.4 主键字段评论表和普通表一样需要主键字段。评论区块会通过主键定位评论记录和回复关系。如果评论表没有主键需要在编辑数据表时设置「Record unique key」否则评论区块可能无法正确查看、回复或删除评论。五、建立关联关系在业务表中创建关系字段关联到评论表。例如在「任务」表中创建一个一对多关系字段指向「任务评论」表评论表中的记录便能通过外键回指对应的任务记录。更多关系字段类型与配置方式可参考 关系字段。六、页面配置使用评论表通常通过评论区块使用。你可以在业务表的详情页、弹窗或记录页中添加评论区块让用户围绕当前记录发表评论。配置位置用途详情区块在业务记录详情中展示评论入口。表单区块配合业务表编辑流程使用评论关系字段。评论区块展示评论列表、发表评论和回复评论。6.1 评论区块的模板校验评论区块并非任何 Collection 都能挂载。CommentsBlockModel.tsx#L28-L32 中的静态方法定义了识别规则export class CommentsBlockModel extends CollectionBlockModel { static scene BlockSceneEnum.oam; static filterCollection(collection) { return collection.template comment; } }filterCollection只放行template comment的表与CommentCollectionTemplate中的name comment相互对应。因此在界面中选择可用的表时只有按「Comment collection」模板创建的表才会出现在候选中。6.2 非评论表的运行时告警如果绕过模板限制、将普通表强制挂上评论区块renderComponent()会渲染一个警告提示而非评论列表CommentsBlockModel.tsx#L63-L77The current collection is not a comment collection, so the comment block cannot be used.这说明「评论表必须由评论模板创建」不仅是不建议而是有明确的运行时兜底。6.3createdBy关联加载与分页评论区块展示「谁评论的」依赖createdBy关联字段。CommentsBlockModel.tsx#L34-L39 在创建资源时显式追加该关联createResource(ctx, params) { const resource this.context.createResource(MultiRecordResource); resource.setPageSize(this.props.pageSize); resource.addAppends(createdBy); return resource; }这解释了为什么「内置字段」表中createdBy被强调为评论区块的展示依赖——它不是界面手动勾选出来的而是区块资源默认appends的字段。若该字段缺失评论人信息将无法加载。分页方面评论区块注册了commentsSettings设置流提供 5 / 10 / 20 / 50 / 100 / 200 六档每页条数默认pageSize: 20CommentsBlockModel.tsx#L89-L124并附带dataScope数据范围步骤。评论较多时可在区块设置中直接调整分页大小。七、编辑配置在数据表列表中点击评论表右侧的「Edit」可以修改数据表显示名称、分类、说明、简单分页模式和「Record unique key」等配置。评论表上线后不建议随意调整评论内容字段和回复关系字段。评论区块、权限、工作流和 API 可能会依赖这些字段。结合源码可以看到contentdeletable: false与createdBy资源层addAppends都已经被评论区块强绑定改动或重命名这些字段会直接影响评论列表的展示与读写。八、删除数据表在数据表列表中点击评论表右侧的「Delete」可以删除评论表。删除评论表会删除评论记录、回复关系和相关 Collection 元数据。删除前先确认业务表中的关系字段、评论区块、权限、工作流和 API 是否仍然依赖它。警告删除评论表会让已有业务记录失去评论数据。评论通常承载协作过程和处理意见操作前先确认是否需要备份或归档。九、相关链接普通表 — 查看通用配置和区块使用方式关系字段 — 了解业务表与评论表的关联方式评论插件 — 查看评论区块和评论能力多空间 — 了解空间字段和空间隔离能力。【免费下载链接】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),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。