postgresqlloopback4

Debugging connection PostgreSQL Loopback 4


Im on a mac(OS 10.14) using nodejs 14 and PostgresSQL 12. I just installed Loopback4 and after following this tutorial Im not able to use any of the enpoints that use Models, ie that connect to Postgres, I constantly get a timeout. It seems like its not even reaching the Postgres Server, but the error gives no information, just that the request times out.

There are no issues with the Postgres server since I can connect and request information with other nodejs applications to the same database.

I also tried to set this as the host host: '/var/run/postgresql/', same result.

I now tried the approach with a Docker container, setting the datasource files as follows:

import {inject, lifeCycleObserver, LifeCycleObserver} from '@loopback/core';
import {juggler} from '@loopback/repository';

const config = {
 name: 'mydb',
 connector: 'postgresql',
 url: 'postgres://postgres:mysecretpassword@localhost:5434/test',
 ssl: false,
};

// Observe application's life cycle to disconnect the datasource when
// application is stopped. This allows the application to be shut down
// gracefully. The `stop()` method is inherited from `juggler.DataSource`.
// Learn more at https://loopback.io/doc/en/lb4/Life-cycle.html
@lifeCycleObserver('datasource')
export class PostgresSqlDataSource extends juggler.DataSource
  implements LifeCycleObserver {
 static dataSourceName = 'PostgresSQL';
 static readonly defaultConfig = config;

  constructor(
    @inject('datasources.config.PostgresSQL', {optional: true})
    dsConfig: object = config,
  ) {
    super(dsConfig);
  }
}

With that same url I can log on my command line from my mac.

Is there a way to add logging and print any connection error? Other ways to debug it?

[UPDATE] As of today Loopback4 Postgres connector does not work properly with Nodejs 14.


Solution

  • When starting the application, instead of running npm start, you can set the debug string by running:

    DEBUG=loopback:connector:postgresql npm start
    

    If you want it to be more generic, you can use:

    DEBUG=loopback:* npm start