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

如何在Node.js中监听Firebird数据库触发的自定义事件

Firebird事件在Node.js中的正确监听实现

你的原有代码错误在于直接对db实例监听自定义的new_orc事件,但node-firebird的所有数据库事件都会统一触发名为event的事件,且需要你先显式调用addEvent方法注册你要监听的Firebird服务端事件名称,否则底层不会处理对应事件的推送。

正确实现代码

const Firebird = require('node-firebird');

// 替换为你实际的数据库连接配置
const options = {
  host: '127.0.0.1',
  port: 3050,
  database: '/path/to/your/database.fdb',
  user: 'SYSDBA',
  password: 'masterkey'
};

Firebird.attach(options, function(err, db) {
  if (err) throw err;

  // 1. 显式注册要监听的服务端事件
  db.addEvent('new_orc', function(err) {
    if (err) throw err;
    console.log('new_orc事件监听注册成功');
  });

  // 2. 监听统一的event事件,判断事件名处理对应逻辑
  db.on('event', function(eventName, triggerCount) {
    if (eventName === 'new_orc') {
      console.log(`收到new_orc事件,距离上次收到后累计触发次数:${triggerCount}`);
      // 此处编写你的业务处理逻辑
    }
  });

  // 进程退出时释放连接
  process.on('SIGINT', () => {
    db.detach();
    process.exit();
  });
});

注意事项

  • 回调中的triggerCount是Firebird返回的累计触发次数:如果事件短时间内多次触发,Firebird会合并推送,返回从上次推送后到当前的总触发次数,你可以根据业务需要做对应处理。
  • 需要停止监听某个事件时,调用db.removeEvent('new_orc', callback)即可释放对应监听。
  • 确保服务器防火墙没有拦截Firebird的3050端口通信,事件推送会复用当前的数据库连接,不需要额外开放端口。
  • 触发器本身逻辑正确,只要ORC表有新数据插入就会触发new_orc事件,排查问题时可以先手动插入测试数据确认数据库侧事件正常推送。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 09:15:03