hornet-js-bean
v5.5.0-rc.4
Published
Ensemble des décorateurs pour les beans hornet-js
Downloads
3
Readme
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