hornet-js-bean
TypeScript icon, indicating that this package has built-in type declarations

5.5.0-rc.4 • Public • Published

hornet-js-bean

hornet-js-bean fournit un module pour la gestion des beans afin de faire du mapping entre objets. Ce module est basé sur les annotations @Bean et @Map.

Prérequis

  • NodeJS 10.X

Utilisation dans un projet

Ajouter au package.json

  "dependencies"{
    "hornet-js-bean""5.5.X"
  }

Puis lancer la commande :

npm install

Définition d'un Bean Hornet

voici un exemple de configuration d'un objet métier: on déclare notre objet en tant que bean hornet à l'aide de @Bean. Puis, on définit les champs que l'on veut mapper.

 
import Bean from "hornet-js-bean/src/decorators/Bean";
import Map from "hornet-js-bean/src/decorators/Map";
 
@Bean
export class ObjetMetier {
 
    @Map()
    id: number = 0;
 
    @Map()
    nom: string;
 
    desc: string = 'dummy';
}
 

Utilisation du mapper

Le projet hornet-js-bean fournit une classe BeanUtils qui fournit des opérateurs sur les Beans Hornet. Tous ces opérateurs renvoient une Promise.

  • mapObject : Méthode statique qui permet de mapper un objet vers un objet de type
  • mapArray : Méthode statique qui permet de mapper un tableau vers un tableau de type
  • map : Méthode statique qui permet de mapper une instance vers un objet de type
  • serializeObject : Méthode statique qui permet de sérialiser un objet vers un objet de type
  • serializeArray : Méthode statique qui permet de sérialiser un tableau vers un tableau de type
  • serialize : Méthode statique qui permet de sérialiser une instance vers un objet de type
  • cloneObject : Méthode statique qui permet de cloner un objet vers un nouvel objet de même type
  • cloneArray : Méthode statique qui permet de cloner un tableau vers un nouveau tableau de même type
  • clone : Méthode statique qui permet de cloner une instance vers un nouvel objet de même type

Voici un exemple qui permet de créer un objet ObjetMetier à partir d'un objet existant.

 
import {BeanUtils} from "hornet-js-bean/src/bean-utils";
 
...
let source = {
    id : 1,
    nom : 'nom',
    prenom: 'prenom',
    desc : 'desc'};
 
BeanUtils.mapObject(ObjetMetier,source).then((result:ObjetMetier) =>{
    result.id //<= 1
    result.nom //<= 'nom'
    result.desc //<= 'dummy'
    //l'attribut prénom n'existe pas dans result
});
...
 

Utilisation du mapper via l'annotation @Map sur une Promise

Si une fonction renvoie une promesse de résultat, il est possible de chainer le mapping de deux façons:

 
    getObjetMetier() : Promise<ObjetMetier>{
        return New Promise<>(resolve, reject).then((source) => {
            return BeanUtils.mapObject(ObjetMetier,source))
        }
    }
 
est équivalent à
 
    @Map(ObjetMetier)
    getObjetMetier() : Promise<ObjetMetier>{
        return New Promise<>(resolve, reject)
    }

Utilisation du mapper via l'annotation @Map sur les paramètres d'une fonction qui renvoie une Promise

Pour transformer un object metier en DTO par exemple, on peut procéder de la manière suivante: Attention, il ne faut pas oublier de mettre une annotation sur la fonction pour lui dire de faire la transformation!

 
    @Map()
    getObjetMetier(@Map(ObjectDTO)metier) : Promise<ObjetMetier>{
        //ici metier sera transformé automatiquement en un objetDTO
        return insert(metier)
    }

Utilisation du mapper avec des alias

Il se peut que les noms des attributs diffèrent entre l'objet source et l'object de destination L'annotation @Alias permet de configurer 1 ou plusieurs alias (l'ordre est important ici=>Le premier qui match est retenu). Reprenons l'exemple ci-dessus:

 
@Bean
export class ObjetMetier {
 
    @Map()
    id: number = 0;
 
    @Map()
    nom: string;
 
    @Map()
    @Alias('description')
    desc: string = 'dummy';
}
 
import {BeanUtils} from "hornet-js-bean/src/bean-utils";
 
...
let source = {
    id : 1,
    nom : 'nom',
    prenom: 'prenom',
    description : 'desc'};
 
BeanUtils.mapObject(ObjetMetier,source).then((result:ObjetMetier) =>{
    result.id //<= 1
    result.nom //<= 'nom'
    result.desc //<= 'desc'
});
...
 

Licence

hornet-js-bean est sous licence cecill 2.1.

Site web : http://www.cecill.info

Readme

Keywords

none

Package Sidebar

Install

npm i hornet-js-bean

Weekly Downloads

15

Version

5.5.0-rc.4

License

CECILL-2.1

Unpacked Size

189 kB

Total Files

16

Last publish

Collaborators

  • moulinw