Skip to content

ionutpasca/nested-beautifier

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nested-beautifier

GitHub license npm Code Climate

Small library that beautifies MySql results

Usually, when you're trying to get some complex data from a MySql server, the response needs more computation to get it into a tree form. For example, when you're joining two tables, TableA and TableB, that are bonded with a one to many relationship, you get a response like the following:

result: [
{
  TableA: { id: 1 },
  TableB: { id: 1 }
},
{
  TableA: { id: 1  someMoreData... },
  TableB: { id: 2, someMoreData... }
}
...
]
// Observe that for every different TableB that is bonded with a TableA record, the data
// from TableA is duplicated

Wouldn't it be nice if you could transform this kind of data into a tree-like structure like the followig ?!

result: [
  {
    TableA: {
      id: 1,
      TableB: [
        {
          id: 1,
          someMoreData...
        },
        {
          id: 2,
          someMoreData...
        }
      ]
  }
]

You can now achieve that using the "nested-beautifier"

First steps

  • Install the beautifier
npm install --save nested-beautifier

Parameters

The nested-beautifier takes two parameters (Yeah... 2)

The first one is, obviously, a response got from MySql.

The second parameter must contain some information about the very first table from MySql that is included in the query.

For example, if we are using 'SELECT [someData] FROM TableA INNER JOIN [someOtherTables]' , the second parameter will become an object like the following :

{
  idAttr: [a uniq table column, like id],
  name: 'TableA'
}

If the parent table doesn't contain a uniq column, then the 'nested-beautifier' will create a uniq hash for every diffrent parent data.

Usage

// You need to require the library
var Beautifier = require('nested-beautifier')

// Say that we have a MySql response
var mySqlQuery = `SELECT * FROM TableA 
  INNER JOIN TableB ON TableB.tableAId = TableA.id`;
  
var MySqlResponse = ExecuteMySqlQuery(mySqlQuery);


var parentData = {
  idAttr: 'id',
  name: 'TableA'
}
var beautifiedResponse = Beautifier.beautify(MySqlResponse, parentData);
// That's all folks

About

Small library that beautifies MySql results

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published