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"
- Install the beautifier
npm install --save nested-beautifier
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.
// 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