
ToolJet 集成 HarperDB 数据源连接配置与 SQL/NoSQL 双模式查询实战指南【免费下载链接】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/ToolJetHarperDB 是一款同时支持 NoSQL 与 SQL 工作负载的高性能单模型数据存储平台其灵活的 HTTP/S 接口和用户自定义 API 非常适合从概念验证到生产环境的快速扩展。本文基于 ToolJet 官方文档与仓库内 HarperDB 插件源码系统讲解如何在 ToolJet 中安装插件、配置连接参数并完整演示 SQL 模式Select / Insert / Update / Delete与 NoSQL 模式Insert / Update / Delete / Search by hash / Search by value / Search by conditions共十种查询操作的配置方法与底层实现原理读完即可在应用构建器中直接对接 HarperDB 完成数据的读写与检索。HarperDB 数据源概览ToolJet 通过 Marketplace 插件机制将 HarperDB 作为全局数据源Global Datasource集成到应用构建器中为读取和写入数据提供了一套简洁的界面。插件本身以tooljet-marketplace/harperdb包的形式存在于仓库的 marketplace/plugins/harperdb 目录下其内部基于axios构建 HTTP 客户端并支持两种查询模式SQL 模式通过 SQL 语句对数据库执行各类操作NoSQL 模式对 JSON 文档进行无模式schema-less的存储与检索。插件默认暴露isLoading、data、rawData三个变量查询结果会以结构化数据返回供应用内的表格、文本等组件直接绑定使用见 manifest.json。前置准备启用 Marketplace 并安装插件在开始使用前需要先完成 Marketplace 的启用与插件安装。详细步骤可参考 Marketplace 插件使用指南核心流程如下启用 Marketplace 功能在 ToolJet 的.env文件中添加环境变量ENABLE_MARKETPLACE_FEATUREtrue本地运行时需先构建 marketplace 以确保所有插件可用同时请注意只有Administrator角色才能访问 Marketplace 页面。安装 HarperDB 插件点击仪表盘左下角的设置图标从菜单中选择Marketplace在 Marketplace 标签页中找到 HarperDB 卡片并点击Install状态变为Installed即完成安装。使用插件安装完成后进入仪表盘的Data sources标签页滚动到Plugins区域即可看到已安装的 HarperDB 插件配置后即可作为数据源在查询面板Query Panel中使用。建立连接连接参数详解要建立与 HarperDB 实例的连接需要提供以下凭据对应 manifest.json 中定义的host、port、ssl_enabled、username、password五个必填字段参数说明默认值HostHarperDB 实例的主机名或 IP 地址例如162.156.250.74或myinstance.harperdbcloud.comlocalhostPort服务器配置的端口号9925若使用 HarperDB Studio云版可留空或设为443SSL连接是否需要 SSL 加密开关falseUsernameHarperDB 实例的身份认证用户名无Password认证密码出于安全考虑以密文形式存储manifest.json中标记为encrypted: true无其中密码字段在插件清单中被标记为加密存储ssl_enabled为开关toggle类型其余字段均为文本输入。连接底层实现从源码看连接逻辑位于 lib/index.ts 的HarperDBClient类中其关键行为包括协议选择const protocol config.ssl false ? http : https;——只有明确关闭 SSL 时才使用http其余情况一律走https端口拼接端口为空时 URL 中不会出现端口部分认证方式使用 axios 的 Basic Authauth: { username, password }进行 HTTP 基本认证超时设置请求超时时间为 30000 毫秒请求方式所有操作均以 JSON 格式 POST 到实例根路径请求体通过operation字段标识具体操作如sql、insert、search_by_hash、describe_all等。此外插件的testConnection方法同样位于 lib/index.ts通过调用describe_all操作来验证连接是否有效成功时返回status: ok及实例描述信息失败时返回包含错误信息的status: failed结果。查询 HarperDB查询管理器入口连接配置完成后即可创建查询在应用构建器App Builder底部面板的查询管理器Query Manager中点击Add按钮在查询编辑器的Global Datasource区域选择HarperDB在查询编辑器中根据需求选择SQL mode或NoSQL mode该模式选择默认值为 SQL见 operations.json并填写对应参数。SQL 模式SQL 模式允许通过 SQL 语句对数据库执行各类操作对应源码中mode sql分支对queryOptions.sql_query的透传执行。以下语法示例均基于文档示例中的sampleorg.people表。SelectSELECT 语句用于查询数据库中的数据SELECT * FROM sampleorg.people WHERE id 1该语句会返回sampleorgschema 下people表中id 1的记录。InsertINSERT 语句用于向数据库表中添加一行或多行数据INSERT INTO sampleorg.people (id, name, age, country, hobby) VALUE (5, Shubh, 26, India, Football)注意 HarperDB 的 INSERT 语法使用VALUE单数关键字与常见 SQL 方言中的VALUES略有差异写入时需保持一致。UpdateUPDATE 语句用于修改数据库表中一行或多行记录的指定属性值UPDATE sampleorg.people SET hobby chess WHERE id 5DeleteDELETE 语句用于从数据库表中移除一行或多行数据DELETE FROM sampleorg.people WHERE id 5NoSQL 模式NoSQL 模式提供无模式schema-less的 JSON 文档存储与检索能力。在查询编辑器的mode下拉框中切换到 NoSQL mode 后还需要通过Operation下拉框选择具体操作可选值包括 Insert、Update、Delete、Search By Hash、Search By Value、Search By Conditions见 operations.json。InsertNoSQL向数据库表中添加一行或多行数据需要填写以下参数参数说明Schema必填待插入记录所在表的 schemaTable必填待插入记录的表名Records必填一个或多个待插入记录的数组示例 Records[{id: 22, name: James Scott, age: 26, country:Italy, hobby: football},...]UpdateNoSQL根据标识行的 hash 属性即主键修改一行或多行记录中指定属性的值参数说明Schema必填待更新记录所在表的 schemaTable必填待更新记录的表名Records必填一个或多个待更新记录的数组示例 Records[{id:12, name:Jeff Hannistor},...] // 主键值为 12 的记录将被更新DeleteNoSQL从指定表中移除一行或多行数据参数说明Schema必填待删除记录所在表的 schemaTable必填待删除记录的表名Hash Values必填一个或多个 hash 属性主键值用于标识要删除的记录示例 Hash Values[6, 15] // 主键值为 6 和 15 的记录将被删除Search by hash根据一个或多个 hash 值返回表中的数据参数说明Schema必填待搜索记录所在表的 schemaTable必填要搜索的表Hash Values必填要检索的 hash 数组Table Attributes必填指定需要返回的属性示例 Hash Values[124, 66] // 主键值为 124 和 66 的记录将被检索示例 Table Attributes[id, name, age, hobby, country] // 仅返回表中提供的这些列Search by value根据匹配的某个值返回表中的数据支持通配符参数说明Schema必填待搜索记录所在表的 schemaTable必填要搜索的表Hash Values必填要检索的 hash 数组Search Attribute必填要搜索的属性可以是任意属性Search Value必填要搜索的值允许使用通配符Table Attributes必填指定需要返回的属性示例 Search Attributename示例 Search ValueJohn Doe # 或使用通配符 Joh*示例 Table Attributes[id, name, age, hobby, country] // 仅返回表中提供的这些列Search by conditions根据一个或多个匹配条件返回表中的数据是 NoSQL 模式下最灵活的检索方式参数说明Schema必填待搜索记录所在表的 schemaTable必填要搜索的表Operator in-between each condition可选每个条件之间使用的运算符取值为And或Or默认AndOffset可选查询结果跳过的记录数默认0Limit可选查询结果包含的记录数默认null不限制Table Attributes必填指定需要返回的属性Conditions to filter必填过滤条件对象数组必须包含一个或多个对象。每个对象包含三个字段search_attribute必填要搜索的属性可为任意属性、search_type必填搜索类型支持equals、contains、starts_with、ends_with、greater_than、greater_than_equal、less_than、less_than_equal、between、search_value必填区分大小写的搜索值若 search_type 为between则使用包含两个值的数组表示搜索区间示例 Table Attributes[id, name, age, hobby, country] // 仅返回表中提供的这些列示例 Conditions to filter[{search_attribute: age, search_type: between, search_value: [20, 28]}, {search_attribute: name, search_type: contains, search_value: Ray}]该示例表示同时满足「年龄介于 20 到 28 之间」且「姓名包含 Ray」的记录将被检索出来条件间默认使用And组合。底层实现原理从查询参数到 HTTP 请求为了让读者更深入地理解上述操作如何被执行这里结合 lib/index.ts 中的run方法梳理完整调用链模式分发插件根据queryOptions.mode判断走 SQL 分支还是 NoSQL 分支SQL 分支直接将sql_query文本封装为{ operation: sql, sql }请求体并发送NoSQL 分支依据queryOptions.operation分发到不同操作insert/update将records字段通过JSON5.parse解析为数组后与schema、table一起发送delete将hash_values解析为数组后发送search_by_hash发送hash_values与get_attributessearch_by_value发送search_attribute、search_value与get_attributessearch_by_conditions发送operator仅当提供时、offset仅当不为undefined时、limit仅当不为undefined时、get_attributes与conditions参数解析records、hash_values、attributes、conditions等 JSON 类字段均使用JSON5.parse解析依赖json5包因此支持不带引号的键名等宽松 JSON 写法如[{id: 1, name: Jose, age: 24}]返回结构插件将响应中的result?.data ?? result ?? {}作为查询结果返回保证结果既可直接使用data字段也能兼容其他返回形态。从 operations.json 还可以看到所有输入框均为codehinter类型这意味着每个参数都支持使用 ToolJet 的表达式语法绑定变量、组件状态或查询结果例如把表格组件的选中行数据动态传入records或hash_values从而构建出可交互的增删改查应用。各字段的占位符示例如[{id: 1, name: Jose, age: 24}]、[123, 65]、[name, age]也已在清单中给出可直接参考填写。查询结果的使用查询执行完毕后返回的数据会写入查询的data变量中可供应用内的各类组件引用。例如将 HarperDB 查询作为表格组件的数据源或将查询结果绑定到文本、下拉框等组件的属性上即可快速搭建出基于 HarperDB 的数据管理界面。借助查询面板的触发器如事件处理器还可以将增删改操作与按钮点击等交互事件关联形成完整的数据闭环。插件的类型定义位于 lib/types.ts其中SourceOptions对应连接参数host、port、ssl_enabled、username、passwordQueryOptions对应全部查询参数需要二次开发或扩展插件能力的读者可以从这两个类型入手阅读源码进一步了解参数如何被run方法消费。【免费下载链接】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),仅供参考