You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Autodesk Forge扩展实现点击按钮从外部SQL数据库获取数据的方案咨询

问题本质说明

你碰到的require()无法在Forge扩展按钮逻辑里使用的核心原因是:require()是Node.js服务端的模块化语法,而Forge扩展运行在浏览器前端环境,浏览器原生不支持该语法,且数据库操作逻辑本身不允许直接放在前端执行,会泄露数据库权限凭证,存在极高安全风险。

实现路径

按照前后端分离的架构实现即可,整体分为3个核心步骤:

1. 封装服务端数据库查询接口

  • 将你已有的数据库查询代码全部放在服务端实现,用Express、Koa等轻量Node.js框架封装成HTTP接口,接口接收查询所需的参数,完成数据库操作后返回JSON格式的结果
  • 服务端启动后配置跨域CORS规则,允许你的Forge应用前端地址访问该接口

服务端示例代码:

const express = require('express')
const app = express()
const sql = require('mssql') // 替换为你实际使用的SQL数据库依赖包
// 配置数据库连接(仅在服务端存储,不会泄露到前端)
const dbConfig = {
  user: '你的数据库账号',
  password: '你的数据库密码',
  server: '数据库地址',
  database: '目标库名'
}

// 数据库查询接口
app.get('/api/forge-data', async (req, res) => {
  try {
    await sql.connect(dbConfig)
    // 替换为你已有的数据库查询逻辑,可通过req.query获取前端传的查询参数
    const result = await sql.query`SELECT * FROM 目标表名`
    res.json(result.recordset)
  } catch (err) {
    res.status(500).json({ error: err.message })
  }
})

app.listen(3000, () => console.log('服务端运行在端口3000'))

2. 开发Forge扩展按钮逻辑

Forge扩展的按钮触发回调中不需要引入任何数据库相关依赖,直接调用第一步封装的服务端接口即可。
前端按钮点击逻辑示例代码:

// Forge自定义扩展内的按钮点击回调
function onCustomBtnClick() {
  // 可按需传递查询参数,比如当前选中的构件dbid等
  fetch('http://localhost:3000/api/forge-data?dbid=xxx')
    .then(res => res.json())
    .then(data => {
      // 拿到数据库返回的数据后,自行处理后续业务逻辑,比如在Viewer中高亮构件、展示属性等
      console.log('数据库返回数据:', data)
    })
    .catch(err => console.error('请求失败:', err))
}

3. 功能验证

  • 先单独启动服务端,直接在浏览器访问接口地址,确认可以正常返回数据库数据
  • 再启动Forge前端应用,点击扩展按钮,确认可以正常拉取数据并执行后续业务逻辑
注意事项
  • 所有数据库连接凭证、查询逻辑必须全部放在服务端,禁止在前端代码中写入任何数据库敏感信息
  • 上线部署时需要给接口增加权限校验逻辑,避免未授权访问
  • 如果需要根据模型构件信息查询对应数据,直接将构件的dbid、属性等作为接口参数传递给服务端即可

内容的提问来源于stack exchange,提问作者Maycon Freitas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:39:02