fractal-transformer
v1.0.2
Published
Transform data for presentation and transformation layer for complex data output, the like found in RESTful APIs, and works really well with JSON. Its like a view layer for your JSON/YAML/etc.
Downloads
315
Readme
fractal-transformer
Install
npm install fractal-transformer --save
Test
npm test
Basic Usage
//import library
var fractal = require('fractal-transformer')();
//get data from database or ...
var dataDatabase = {
"_id": "5a91c4547886436ed94e6326",
"firstName": "John",
"lastName": "Doe",
"password": "$2a$10$VzJQsmaknGuafqXSfzDWg.zPshX..uY26Yn8X9TJnvjGqHex1FQ7S",
};
//transform data
var dataTransformed = fractal(dataDatabase,{
"id": "_id",
"name": function (data) {
return data.get('firstName') + " " + data.get('lastName');
}
});
console.log(dataTransformed);
The expected output
{
"id": "5a91c4547886436ed94e6326",
"name": "John Doe"
}
Usage with others transformers
//import library
var fractal = require('fractal-transformer')();
//get data from database or ...
var dataDatabase = {
"_id": "5a91c4547886436ed94e6326",
"firstName": "John",
"lastName": "Doe",
"password": "$2a$10$VzJQsmaknGuafqXSfzDWg.zPshX..uY26Yn8X9TJnvjGqHex1FQ7S",
"role" : {
"_id" : "5a93080d13592753b1146198",
"name" : "admin",
"permission" : 5
}
};
//transform data
var dataTransformed = fractal(dataDatabase, {
"id": "_id",
"name": function (data) {
return data.get('firstName') + " " + data.get('lastName');
},
"role": {
"id": "role._id",
"name": "role.name"
}
});
console.log(dataTransformed);
The expected output
{
"id": "5a91c4547886436ed94e6326",
"name": "John Doe",
"role": {
"id": "5a93080d13592753b1146198",
"name": "admin"
}
}
Usage with data arrays
//import library
var fractal = require('fractal-transformer')();
//get data from database or ...
var dataDatabase = {
"_id": "5a91c4547886436ed94e6326",
"firstName": "John",
"lastName": "Doe",
"password": "$2a$10$VzJQsmaknGuafqXSfzDWg.zPshX..uY26Yn8X9TJnvjGqHex1FQ7S",
"role" : {
"_id" : "5a93080d13592753b1146198",
"name" : "admin",
"permission" : 5
},
"permissions" : [
{
"_id" : "5a9307b413592753b1146197",
"name" : "create"
},
{
"_id" : "5a93076510c0b653673e7264",
"name" : "delete"
}
]
};
//transform data
var dataTransformed = fractal(dataDatabase, {
"id": "_id",
"name": function (data) {
return data.get('firstName') + " " + data.get('lastName');
},
"role": {
"id": "role._id",
"name": "role.name"
},
"permissions": fractal(dataDatabase.permissions, {
"name_permission": "name"
})
});
console.log(dataTransformed);
The expected output
{
"id":"5a91c4547886436ed94e6326",
"name":"John Doe",
"role":{
"id":"5a93080d13592753b1146198",
"name":"admin"
},
"permissions":[
{
"name_permission":"create"
},
{
"name_permission":"delete"
}
]
}
Usage when data is a array
//import library
var fractal = require('fractal-transformer')();
//get data from database or ...
var dataDatabase = [{
"_id": "5a91c4547886436ed94e6326",
"firstName": "John",
"lastName": "Doe",
"password": "$2a$10$VzJQsmaknGuafqXSfzDWg.zPshX..uY26Yn8X9TJnvjGqHex1FQ7S",
},
{
"_id": "5a931bd3bac34d6aa90804dc",
"firstName": "Homero",
"lastName": "Simpson",
"password": "$2a$10$B19Xg/peAH.BK4Z1gV/xJ.2OXvm9kO95W89SYzAxYP7GS26i9mOvy",
}
];
//transform data
var dataTransformed = fractal(dataDatabase, {
"id": "_id",
"name": function (data) {
return data.get('firstName') + " " + data.get('lastName');
}
});
console.log(dataTransformed);
The expected output
[
{
"id":"5a91c4547886436ed94e6326",
"name":"John Doe"
},
{
"id":"5a931bd3bac34d6aa90804dc",
"name":"Homero Simpson"
}
]
Usage with config
create a transformers folder and create a file dataDatabase.js
in it.
module.exports = {
"id": "_id",
"name": function (data) {
return data.get('firstName') + " " + data.get('lastName');
}
}
//import library
var fractal = require('fractal-transformer')();
//get data from database or ...
var dataDatabase = [{
"_id": "5a91c4547886436ed94e6326",
"firstName": "John",
"lastName": "Doe",
"password": "$2a$10$VzJQsmaknGuafqXSfzDWg.zPshX..uY26Yn8X9TJnvjGqHex1FQ7S",
},
{
"_id": "5a931bd3bac34d6aa90804dc",
"firstName": "Homero",
"lastName": "Simpson",
"password": "$2a$10$B19Xg/peAH.BK4Z1gV/xJ.2OXvm9kO95W89SYzAxYP7GS26i9mOvy",
}
];
//transform data
var dataTransformed = fractal(dataDatabase,'dataDatabase');
console.log(dataTransformed);
The expected output
[
{
"id":"5a91c4547886436ed94e6326",
"name":"John Doe"
},
{
"id":"5a931bd3bac34d6aa90804dc",
"name":"Homero Simpson"
}
]
By default it searches for dataDatabase.js
in transformers
folder in the root
of the project.
You can overwrite its location by transformerDir: 'path/to/dir'
var fractal = require('fractal-transformer')({
transformerDir: 'api/transformers'
});
License
MIT © Riaz Laskar