完全指南:类型体系、连接管理与工作区共享机制)
ToolJet 数据源Data Sources完全指南类型体系、连接管理与工作区共享机制【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet数据源Data Sources是 ToolJet 连接外部世界的桥梁它决定了你的应用能否从数据库、外部 API 和服务中读写数据。本篇指南以 ToolJet 3.0.0-LTS 版本文档为核心结合开源仓库中的前端实现与插件源码系统讲解数据源的概念、分类、数据源管理器、工作区级共享机制、权限控制以及旧版本作用域迁移帮助你从原理到实操全面掌握 ToolJet 的数据源体系。在 App Builder 左侧边栏点击 Data Sources 按钮打开的数据源管理器什么是数据源在 ToolJet 中数据源Data Sources是应用读写数据的基础设施。它使应用能够从不同的来源获取数据、向不同的来源发送数据这些来源包括数据库如 PostgreSQL、MySQL、MongoDB、Snowflake 等外部 API如 REST API、GraphQL、gRPC、OpenAPI 等服务如 Slack、Stripe、Twilio、SendGrid、SMTP 等第三方服务。数据源的核心价值在于一次配置、处处复用一旦某个数据源在某个工作区Workspace中配置完成它就可以被该工作区内的所有应用共享使用而不需要在每个应用里重复录入连接凭据。这一设计让团队能够集中维护数据库凭据和 API Key既减少了重复劳动也降低了凭据泄露的风险。从实现角度看ToolJet 将数据源分为两个层级工作区级全局数据源与应用内数据源。工作区级数据源由 Dashboard 上的 Data Sources 页面统一管理全局共享而 2.3.0 之前版本创建的应用其数据源则是从 App Builder 内部建立连接详见后文作用域迁移章节。数据源的分类体系ToolJet 除自带的数据库ToolJet Database之外还支持范围广泛的外部数据源。从源码 DataSourceComponents/index.js 可以清晰看到前端将数据源按type字段划分为以下类别分类说明源码中的构建方式数据库Database各类关系型与非关系型数据库DataBaseSourcestype 为databaseAPIREST、GraphQL、OpenAPI、gRPC 等接口类数据源ApiSourcestype 为api云存储Cloud StorageS3、GCS、MinIO、Azure Blob 等CloudStorageSourcestype 为cloud-storageAI 数据源AI SourcesOpenAI 等 AI 能力接入AiSourcestype 为ai其他OtherRun JavaScript、Run Python、ToolJet Database、Workflows 等内建源OtherSources内建 schema常用数据源Commonly UsedREST API、MongoDB、Google Sheets、PostgreSQL、Snowflake、GraphQL、OpenAPI、gRPC、Databricks、AWS S3 等快捷入口getCommonlyUsedDataSources()其中常用数据源列表由源码中的commonlyUsedSourceNames数组定义见 DataSourceComponents/index.js按固定顺序展示 REST API、PostgreSQL、Google Sheets 2.0、MongoDB、Snowflake、GraphQL、OpenAPI、gRPC 2.0、Databricks、AWS S3 等高频使用项方便用户快速添加。分类枚举本身定义在插件清单的 JSON Schema 中manifest.schema.jsontype字段允许的取值为api、cloud-storage、database每种类型由插件的 manifest 文件声明前端据此自动归类渲染。数据源管理器Data Source Manager要管理这些数据源ToolJet 提供了数据源管理器。在 App Builder 中点击左侧边栏的 Data Sources 按钮即可打开管理器界面从中可以查看当前工作区已连接的数据源列表浏览可添加的数据源分类与插件新增、编辑、删除数据源及其连接凭据测试连接是否可用。数据源管理器的前端实现位于 DataSourceManager.jsx。从源码可以看到管理器组件通过datasourceService、pluginsService、globalDatasourceService等服务获取数据源与插件信息并依赖allManifests由tooljet/plugins/client提供的所有插件清单来渲染不同数据源的配置表单——带有tj:version的新版清单使用DynamicFormV2渲染旧格式清单则回退到DynamicForm见 DataSourceComponents/index.js。值得注意的是管理器还内置了**连接测试TestConnection**能力并针对 Git 同步产生的dummy 数据源is_dummy为 true 且 options 为空做了特殊处理会从对应插件 manifest 中计算默认配置项保证表单可用见 DataSourceManager.jsx。工作区级共享与多环境支持数据源管理器的一个关键特性是作用域。工作区级数据源全局数据源配置完成后会在 Dashboard 的Data Sources 页面统一展示与维护页面实现见 GlobalDataSourcesPage/index.jsx。该页面通过globalDatasourceService拉取数据源列表并支持按常用/分类浏览数据源选中某个数据源后在右侧打开配置表单复用DataSourceManager的弹窗模式在多环境development / production 等之间为同一数据源维护不同的连接配置。对商业版付费计划用户而言配置条目并保存后数据源才能跨多个环境使用。多环境的实现与优先级配置可参考 多环境相关文档。全局数据源页面还通过useWorkspaceBranchesStore感知 Git 分支切换分支变化时会自动重新拉取对应分支的数据源列表。共享机制总结数据源 → 添加到工作区 → 工作区内所有应用含已存在的与新创建的应用在查询面板的Available data sources区域即可直接使用无需重复配置。添加数据源三步完成连接添加一个新数据源非常简单从源码与官方文档可归纳为以下流程打开数据源入口点击 App Builder 左侧边栏的Data Sources按钮打开管理器或者直接从 Dashboard 左侧边栏进入Data Sources页面。选择数据源并点击 Add在管理器左侧的分类列表数据库、API、云存储、插件等中找到目标数据源鼠标悬停时会出现Add按钮点击后该数据源即被集成到当前工作区。填写连接凭据并保存在表单中输入主机、端口、用户名、密码、API Key 等配置项。不同数据源的表单字段由对应插件的 manifest 动态生成。保存后即可回到 App Builder 的查询面板中在Available data sources下选择该数据源创建查询。添加数据源后填写配置信息的操作演示对于同一数据源建立了多个连接的情况创建查询时还可以在查询面板中切换不同的连接。默认数据源每个 ToolJet 应用默认自带 4 个开箱即用的数据源无需任何配置即可使用默认数据源用途对应文档ToolJet DatabaseToolJet 内置数据库可视化建表与 CRUDToolJet DatabaseREST API调用任意 HTTP 接口REST API 文档Run JavaScript Query在应用中执行 JS 代码自定义 JSRun Python Query在应用中执行 Python 代码运行 Python这 4 个默认数据源在源码中属于OtherSources见 DataSourceComponents/index.js其中 Run JS、Run Python 分别由Runjs.schema.json、Runpy.schema.json定义ToolJet Database 则由 AppBuilder 查询编辑器目录下的manifest.json定义。数据源的用户权限控制数据源的Permissions权限配置是工作区内Admins和Super Admins的专属能力。管理员可通过Workspace Settings → Groups Settings为不同用户组分配两类权限详见 数据源概览文档 与 用户管理-访问控制1工作区内数据源的创建与删除权限权限说明Just Create仅创建可添加新数据源并修改已有数据源悬停已连接的数据源时不显示删除按钮Just Delete仅删除可从工作区移除已连接的数据源悬停时显示删除按钮Both Create and Delete创建与删除既可添加新数据源也可移除已连接的数据源Neither Create nor Delete均不可无法从 Dashboard 访问 Data Sources 页面直接通过 URL 访问时会弹出错误提示error toast2授权数据源的查看与编辑权限权限说明View查看用户组可连接被授权的数据源但无法更新其连接凭据Edit编辑用户可更新被授权数据源的连接凭据这套权限模型对应后端的数据源组权限表可参考迁移文件 CreateDataSourcesGroupPermissionsTable 与 AddGroupDataSourceTable实现按用户组粒度的数据源访问隔离。旧版本应用的数据源作用域迁移对于在ToolJet 2.3.0 以下版本创建的应用数据源连接是在单个应用内部完成的。为保证向后兼容ToolJet 提供了将应用内数据源变更作用域change scope为全局数据源的能力打开旧版本创建的应用在 App Builder 左侧边栏可以看到数据源管理器Data Source Manager。在已连接的数据源旁找到 kebab 菜单更多操作选择change scope选项。作用域变更完成后左侧边栏的数据源管理器会被移除该数据源会出现在查询面板的Available data sources可用数据源区域中此后即可在 Dashboard 的Data Sources 页面统一配置该数据源。迁移完成后该数据源就从应用私有升级为工作区共享后续所有应用的查询面板都能直接引用它。插件体系数据源背后的架构支撑ToolJet 的数据源生态基于插件Plugin架构构建理解它有助于你判断某个数据源能否满足团队需求甚至自己扩展新的数据源。核心事实如下插件清单Manifest每个插件通过 manifest 文件声明数据源的名称name、类型type、默认配置defaults等信息其格式由 manifest.schema.json 约束插件目录数据库、API 等数据源插件位于 plugins/packages/目前包含 PostgreSQL、MySQL、MongoDB、Snowflake、REST API、GraphQL、Stripe、Slack、S3 等数十个插件包前端自动渲染前端根据插件的 manifest 动态生成配置表单新版tj:version清单走DynamicFormV2因此新增插件无需修改前端代码连接能力由插件实现以 PostgreSQL 插件为例lib/index.ts其基于 knex 构建查询并额外实现了SSH 隧道支持密码与私钥两种认证方式ssh_auth_type为private_key时校验私钥必填、连接缓存cacheConnectionWithConfiguration与连接测试ConnectionTestResult等能力从源码结构看还可推断其通过连接哈希复用已建立的连接以提升查询性能。这种manifest 驱动 插件实现 前端动态渲染的架构使得数据源的添加、配置与使用高度统一也让整个数据源体系具备良好的可扩展性。数据源目录查询完整的兼容列表本文仅介绍了数据源的概念、分类与管理方式。要查看全部兼容数据源及其详细配置步骤请查阅官方数据源目录Datasource Catalogdocs/docs/data-sources/overview.md其中按类别列出了 PostgreSQL、MySQL、MongoDB、Snowflake、REST API、GraphQL、Stripe、Slack、S3、Twilio 等全部数据源条目并提供了每个数据源的主机、端口、凭据等参数的完整配置说明。小结通过本文你应该已经掌握数据源的定义与作用连接数据库、外部 API 与服务的统一入口工作区内所有应用共享分类体系数据库 / API / 云存储 / AI / 内建源 / 常用源六大类别由插件 manifest 驱动前端自动归类管理入口App Builder 左侧边栏的数据源管理器与 Dashboard 的全局 Data Sources 页面添加流程三步完成连接配置并在查询面板中直接选用默认数据源ToolJet Database、REST API、Run JS、Run Python 开箱即用权限模型Admin/Super Admin 可通过组权限精细控制创建、删除、查看与编辑作用域迁移旧版本应用内数据源可一键升级为全局数据源。在此基础上结合插件源码与前端实现继续深入你还能进一步理解 ToolJet 数据源体系的可扩展设计为团队内部工具的数据库与 API 集成提供坚实支撑。【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考