Giter Site home page Giter Site logo

Comments (6)

jmls avatar jmls commented on May 24, 2024

fwiw, the discoverExportedForeignKeys function seems to return some data from my db :

image

from loopback-connector-postgresql.

rmartins90 avatar rmartins90 commented on May 24, 2024

+1

from loopback-connector-postgresql.

jmls avatar jmls commented on May 24, 2024

anyone ? Been over a year .. surely someone else has hit this problem ?

from loopback-connector-postgresql.

superkhau avatar superkhau commented on May 24, 2024

Apparently not, @jmls would you like to submit a patch?

from loopback-connector-postgresql.

ssh24 avatar ssh24 commented on May 24, 2024

@jmls Have you tried using the discoverSchemas function? It returns multiple schemas of which the models are related.

Here is a sample code snippet:

I want to discover the schemas of table Author and Book.

Here is what it looks like in the database:

testdb=# \d Book;
      Table "public.book"
  Column  |  Type   | Modifiers
----------+---------+-----------
 bid      | integer | not null
 name     | text    |
 isbn     | text    |
 authorid | integer | not null
Indexes:
    "book_pkey" PRIMARY KEY, btree (bid, authorid)
Foreign-key constraints:
    "book_author_author_id_fkey" FOREIGN KEY (authorid) REFERENCES author(aid)

testdb=# \d Author;
                                    Table "public.author"
 Column |            Type             |                      Modifiers
--------+-----------------------------+------------------------------------------------------
 aid    | integer                     | not null default nextval('author_aid_seq'::regclass)
 name   | text                        |
 dob    | timestamp without time zone |
Indexes:
    "author_pkey" PRIMARY KEY, btree (aid)
Referenced by:
    TABLE "book" CONSTRAINT "book_author_author_id_fkey" FOREIGN KEY (authorid) REFERENCES author(aid)

boot-script.js

'use strict';
var util = require('util');
var _ = require('lodash');

module.exports = function(app) {
    var db = app.datasources.postgresqlDs;

    db.discoverSchemas('book', {schema: 'public', relations: true}, function(err, result) {
        if (err) throw err;
        console.log('\nDiscovered schemas for `Author` and `Book` table: ' + util.inspect(result, {depth:4}));
    });
};

output

sakibs-mac:postgresql-65 ssh$ node .
Web server listening at: http://0.0.0.0:3000
Browse your REST API at http://0.0.0.0:3000/explorer

Discovered schemas for `Author` and `Book` table: { 'public.book': 
   { name: 'Book',
     options: 
      { idInjection: false,
        postgresql: { schema: 'public', table: 'book' },
        relations: { bookAuthorAuthorIdFkeyrel: { model: 'Author', type: 'belongsTo', foreignKey: 'authorid' } } },
     properties: 
      { bid: 
         { type: 'Number',
           required: true,
           length: null,
           precision: 32,
           scale: 0,
           id: 1,
           postgresql: 
            { columnName: 'bid',
              dataType: 'integer',
              dataLength: null,
              dataPrecision: 32,
              dataScale: 0,
              nullable: 'NO' } },
        name: 
         { type: 'String',
           required: false,
           length: null,
           precision: null,
           scale: null,
           postgresql: 
            { columnName: 'name',
              dataType: 'text',
              dataLength: null,
              dataPrecision: null,
              dataScale: null,
              nullable: 'YES' } },
        isbn: 
         { type: 'String',
           required: false,
           length: null,
           precision: null,
           scale: null,
           postgresql: 
            { columnName: 'isbn',
              dataType: 'text',
              dataLength: null,
              dataPrecision: null,
              dataScale: null,
              nullable: 'YES' } },
        authorid: 
         { type: 'Number',
           required: true,
           length: null,
           precision: 32,
           scale: 0,
           id: 2,
           postgresql: 
            { columnName: 'authorid',
              dataType: 'integer',
              dataLength: null,
              dataPrecision: 32,
              dataScale: 0,
              nullable: 'NO' } } } },
  'public.author': 
   { name: 'Author',
     options: 
      { idInjection: false,
        postgresql: { schema: 'public', table: 'author' },
        relations: {} },
     properties: 
      { aid: 
         { type: 'Number',
           required: true,
           length: null,
           precision: 32,
           scale: 0,
           id: 1,
           postgresql: 
            { columnName: 'aid',
              dataType: 'integer',
              dataLength: null,
              dataPrecision: 32,
              dataScale: 0,
              nullable: 'NO' } },
        name: 
         { type: 'String',
           required: false,
           length: null,
           precision: null,
           scale: null,
           postgresql: 
            { columnName: 'name',
              dataType: 'text',
              dataLength: null,
              dataPrecision: null,
              dataScale: null,
              nullable: 'YES' } },
        dob: 
         { type: 'String',
           required: false,
           length: null,
           precision: null,
           scale: null,
           postgresql: 
            { columnName: 'dob',
              dataType: 'timestamp without time zone',
              dataLength: null,
              dataPrecision: null,
              dataScale: null,
              nullable: 'YES' } } } } }

Hopefully this answered your question. Closing this issue as resolved. Feel free to reopen if needed.

from loopback-connector-postgresql.

ataft avatar ataft commented on May 24, 2024

patch has been submitted for this. not sure how this issue was ever closed as the pkName was clearly hard-coded as 'PK' in the sql...

from loopback-connector-postgresql.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.