Search code examples
node-postgres

How to make a synchronous query (blocking call) with node-postgres?


While booting my Node.js app, I want to make a couple of synchronous calls to the PostgreSQL database to check some things before continuing the control flow. How can I achieve this using the node-postgres package?


Solution

  • The only way to synchronize calls is to nest them in callbacks:

    function init() {
      pg.connect('tcp://user@host/db', function(err, client, done) {
        client.query("SELECT column FROM table", function(err, result) {
          // check some things...
          client.query("SELECT column FROM other_table", function(err, result) {
            // check some other things...
            main(); // proceed with flow...
          }
        });
      }
    }
    
    function main() {
      // main logic
    }
    

    This can be a pain, and would be trivial in some other languages, but it is the nature of the beast.