Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
362 views
in Technique[技术] by (71.8m points)

node.js - How to get RAISE INFO/NOTICE in Knex from node js?

I am using Knex query builder and Postgres as my data base.

I need to get the output from a raise notice or raise info from a Postgres function or procedure.

raise notice 'This is my Log';

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

we need to set notice after pool created, for that we need to use afterCreate function. for your references

https://github.com/knex/knex/issues/4241

The sample code is below.

var pConn = {
        host: 'SERVER',
        port: 'PORT',
        user: 'USER',
        password: 'PASSWORD',
        database: 'DATABAENAME'
    };
    var query = "select * from pglog_test()";
    try {
    
        const knex = require('knex')({
            client: 'pg',
            connection: pConn,
            pool: {
                afterCreate: function (conn, done) {
                    conn.query('select 1 as result', function (err, result) {
                        conn.on('notice', function (msg) {
                            // here we can get the pg procedure logs (raise notice/raise info)
                            console.log('logs from postgress' + msg);
                        });
                        done(err, conn);
                    });
                }
            }
        });
        // procedure calling
        knex.raw(query).then(function (result) {
            console.log(result);
        }).catch(function (error) {
            console.log(error);
        });
    } catch (error) {
        console.log(error);
    }

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...