Giter Site home page Giter Site logo

Comments (9)

ezraroi avatar ezraroi commented on May 23, 2024 6

What about Array types? How we should define them?

from loopback-connector-postgresql.

ssh24 avatar ssh24 commented on May 23, 2024 1

You can specify a column type to be explicitly postgres JSON type of the specific property in the model-definition.

Here is an example code snippet:

model-definition.json

{
  "name": "Business",
  "base": "PersistedModel",
  "idInjection": false,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "id": {
      "type": "number",
      "required": true,
      "id": true
    },
    "name": {
      "type": "string"
    },
    "location": {
      "type": "object",
      "postgresql": {
        "dataType": "json"
      }
    }
  },
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": {}
}

boot-script.js

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

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

    db.automigrate(function(err) {
        if (err) throw err;
        console.log('\nAutomigrate completed');

        Business.create([{
            id: 1,
            name: 'Foo Inc.',
            location: {
                'United States': {
                    stores: 10
                },
                'United Kingdom': {
                    stores: 5
                },
                'Brazil': {
                    stores: 2
                }
            }
        }, {
            id: 2,
            name: 'Bar Inc.',
            location: {
                'United States': {
                    stores: 12
                },
                'United Kingdom': {
                    stores: 20
                },
                'Argentina': {
                    stores: 4
                }
            }
        }], function(err, result) {
            if (err) throw err;
            console.log('\nCreated instance: ' + util.inspect(result, {depth: 4}));

            Business.find(function(err, result) {
                if (err) throw err;
                console.log('\nFound instance: ' + util.inspect(result, {depth:4}))
            });
        });
    });
};

output

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

Automigrate completed

Created instance: [ { id: 1,
    name: 'Foo Inc.',
    location:
     { 'United States': { stores: 10 },
       'United Kingdom': { stores: 5 },
       Brazil: { stores: 2 } } },
  { id: 2,
    name: 'Bar Inc.',
    location:
     { 'United States': { stores: 12 },
       'United Kingdom': { stores: 20 },
       Argentina: { stores: 4 } } } ]

Found instance: [ { id: 1,
    name: 'Foo Inc.',
    location:
     { 'United States': { stores: 10 },
       'United Kingdom': { stores: 5 },
       Brazil: { stores: 2 } } },
  { id: 2,
    name: 'Bar Inc.',
    location:
     { 'United States': { stores: 12 },
       'United Kingdom': { stores: 20 },
       Argentina: { stores: 4 } } } ]

database table output & schema

testdb=# select * from Business;
 id |   name   |                                        location
----+----------+-----------------------------------------------------------------------------------------
  1 | Foo Inc. | {"United States":{"stores":10},"United Kingdom":{"stores":5},"Brazil":{"stores":2}}
  2 | Bar Inc. | {"United States":{"stores":12},"United Kingdom":{"stores":20},"Argentina":{"stores":4}}
(2 rows)

testdb=# \d Business;
    Table "public.business"
  Column  |  Type   | Modifiers
----------+---------+-----------
 id       | integer | not null
 name     | text    |
 location | json    |
Indexes:
    "business_pkey" PRIMARY KEY, btree (id)

Hopefully, this answers the question in this issue. Closing this as resolved. Feel free to reopen if needed.

from loopback-connector-postgresql.

raymondfeng avatar raymondfeng commented on May 23, 2024

We do support 'JSON' or 'Object' as the data type. The value will be stored as a CLOB with stringified json.

from loopback-connector-postgresql.

0xgeert avatar 0xgeert commented on May 23, 2024

Does this allow for filtering (the WHERE equivalent) on key-values in the the JSON?

from loopback-connector-postgresql.

raymondfeng avatar raymondfeng commented on May 23, 2024

No. Embedded object for relational DBs doesn't support queries.

from loopback-connector-postgresql.

dh376 avatar dh376 commented on May 23, 2024

+1

from loopback-connector-postgresql.

geekguy avatar geekguy commented on May 23, 2024

Any update on this ?

from loopback-connector-postgresql.

geekguy avatar geekguy commented on May 23, 2024

@ssh24 - Can we use a find filter for some property in json column?

Something like,

Business.find({ where: { location -> brazil -> stores:  2 } });

If not, any plans to support?

from loopback-connector-postgresql.

ssh24 avatar ssh24 commented on May 23, 2024

There is currently no support using embedded filters on JSON fields at the moment. I have added it as a feature request in our backlog. Patch is welcome. #266

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.