Convert SQL rows to js object(s).
npm install --save argile
The figure above pesents a simple database. We want to retrieve all the posts.
The following request returns all the data in the database.
SELECT
post.id,
post.title,
author.username,
tag.id AS "idTag",
tag.label
FROM post
INNER JOIN author ON author.id = post.author_id
LEFT JOIN post_tag ON post_tag.post_id = post.id
LEFT JOIN tag ON tag.id = post_tag.tag_id
ORDER BY post.id, tag.label
Now, to convert the SQL result to JS objects, we design an object that will be the returned result.
Here, we want to construct by post, an array of tags and an user object.
A string represents the SQL key that will match the correponding return js object property.
The *
character tags the SQL string as a primary key. It is imperative to define a primary key for sub arrays.
{
id : 'id',
title : 'title',
author : {
username : 'username'
},
tags : [{
id : '*idTag',
label : 'label'
}]
}
var argile = require('argile');
var res = argile.convert(SQLrows, {
id : 'id',
title : 'title',
author : {
username : 'username'
},
tags : [{
id : 'idTag',
label : 'label'
}]
});
We assume SQLrows
is an array of JS objects constructed from the SQL request.
The conversion keeps the SQL order defined in the SQL request.
The module has only one function argile.convert(SQLrows, constructedResult)
.
{Array} SQLrows
{Object} constructedResult
It returns an Array