Node.js 有没有一种方法可以使用;“听”;关于knex.js PostgreSQL? 我在PostgreSQL数据库中有一个名为“posts”的表。

Node.js 有没有一种方法可以使用;“听”;关于knex.js PostgreSQL? 我在PostgreSQL数据库中有一个名为“posts”的表。,node.js,postgresql,knexjs,Node.js,Postgresql,Knexjs,因此,我想做的是观察posts表,并在插入任何数据时收到通知 所以我创建了如下的notify\u changes\u of\u posts\u Table函数: CREATE OR REPLACE FUNCTION notify_changes_of_posts_Table() RETURNS trigger AS $$ BEGIN PERFORM pg_notify( 'posts_changes', json_build_object( 'operation'

因此,我想做的是观察posts表,并在插入任何数据时收到通知

所以我创建了如下的notify\u changes\u of\u posts\u Table函数:

CREATE OR REPLACE FUNCTION notify_changes_of_posts_Table()
RETURNS trigger AS $$
BEGIN
  PERFORM pg_notify(
    'posts_changes',
    json_build_object(
      'operation', TG_OP,
      'record', row_to_json(NEW)
    )::text
  );

  RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER posts_changes
AFTER INSERT 
ON posts
FOR EACH ROW
EXECUTE PROCEDURE notify_changes_of_posts_Table()
const db = knex({
  client: 'pg',
  connection: {
    host : '127.0.0.1',
    user : 'postgres',
    password : 'admin',
    database : 'mydb'
  }
});
我还创建了事件触发器,如下所示:

CREATE OR REPLACE FUNCTION notify_changes_of_posts_Table()
RETURNS trigger AS $$
BEGIN
  PERFORM pg_notify(
    'posts_changes',
    json_build_object(
      'operation', TG_OP,
      'record', row_to_json(NEW)
    )::text
  );

  RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER posts_changes
AFTER INSERT 
ON posts
FOR EACH ROW
EXECUTE PROCEDURE notify_changes_of_posts_Table()
const db = knex({
  client: 'pg',
  connection: {
    host : '127.0.0.1',
    user : 'postgres',
    password : 'admin',
    database : 'mydb'
  }
});
我的服务器连接到数据库,如下所示:

CREATE OR REPLACE FUNCTION notify_changes_of_posts_Table()
RETURNS trigger AS $$
BEGIN
  PERFORM pg_notify(
    'posts_changes',
    json_build_object(
      'operation', TG_OP,
      'record', row_to_json(NEW)
    )::text
  );

  RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER posts_changes
AFTER INSERT 
ON posts
FOR EACH ROW
EXECUTE PROCEDURE notify_changes_of_posts_Table()
const db = knex({
  client: 'pg',
  connection: {
    host : '127.0.0.1',
    user : 'postgres',
    password : 'admin',
    database : 'mydb'
  }
});
请注意,服务器节点使用knex.js工具连接到数据库。

因此,为了获得通知,我需要使用“收听”,我不知道如何做到这一点,我查看了knex.js的官方文档,但找不到与此主题相关的任何信息。

所以,伙计们,我在这里完成这项工作很困惑,如果我错了,如果有人能帮我制定代码或建议,因为我现在非常困惑。

提前谢谢大家,伙计们,这可能会对将来的人有所帮助:

async function notify(){
const connection = await db.client.acquireConnection();
connection.query('LISTEN addedrecordp');
connection.on('notification', (msg) => {
   console.log("got " + msg.channel + " payload " + msg.payload);
   
   })

});

await db.client.releaseConnection(connection);

}

伙计们,如果问题不清楚,我可以解释更多!!!你找到解决办法了吗?@Jivings你可以检查下面的答案,…非常感谢@Salah。您还可以将该答案标记为正确:)