ortense
9/11/2015 - 2:28 PM

Um POC divertido com class do es6

Um POC divertido com class do es6

"use strict";

var db = require('./db.json');
var Empresa = require('./empresa.class.js');

//busca a empresa no banco
let db_lucida = db.empresas.filter(empresa => empresa.id === 1)[0];
//instancia da classe
let lucida = new Empresa(
    db_lucida.id,
    db_lucida.nome
);
//E aqui está a prova final
console.log(lucida.funcionarios);
console.log(lucida.funcionarios[0].empresa.nome);
"use strict";

var db = require('./db.json');

class  Funcionario{
    constructor(id, nome, cargo, empresa){
        this.nome  = nome;
        this.cargo = cargo;
        this.empresa = empresa;
    }
}

module.exports = Funcionario;
"use strict";

var db = require('./db.json');
var Funcionario = require('./funcionario.class.js');

class Empresa{
    constructor(id, nome){
        this.id = id;
        this.nome = nome;

        /* É aqui que a mágica acontece */

        //A promessa:
        //temos 2 array e podemos manipula-los
        this.funcionarios = [];
        db.funcionarios.forEach(
            f => {
                if (f.id_empresa === this.id) {
                    this.funcionarios.push(
                        //A virada:
                        //quando os dados do db viram instâncias
                        new Funcionario(
                            f.id,
                            f.nome,
                            f.cargo,
                            this //O grande truque
                        )
                    );
                }
            }
        );
    }
}

module.exports = Empresa;
{
    "funcionarios" : [
        {"id":1, "nome":"Ortense", "cargo": "JS Developer", "id_empresa": 1},
        {"id":2, "nome":"Toschi", "cargo": "JS Developer", "id_empresa": 1},
        {"id":3, "nome":"Gafanhoto", "cargo": "JS Developer", "id_empresa": 1}
    ],
    "empresas" : [
        {"id" : 1, "nome" : "Lúcida"},
        {"id" : 2, "nome" : "ACME"}
    ]
}