Constructor
new EntityDefinition(name)
Construction d'une définition d'entité. Passez par la méthode Component#entity pour créer une entité.
Parameters:
Name | Type | Description |
---|---|---|
name |
String | le nom de l'entité |
- Source:
Methods
_initializeIndexes(cb)
Init des indexes
- virent ceux qu'on avait mis et qui ont disparu de l'entity
- ajoute ceux qui manquent
Parameters:
Name | Type | Description |
---|---|---|
cb |
indexesCallback | rappelée avec (error, createdIndexes), le 2e argument est undefined si on a rien créé |
- Source:
_initializeTextSearchFieldsIndex(callback)
Initialise l'index text (qui doit être unique)
Parameters:
Name | Type | Description |
---|---|---|
callback |
- Source:
- See:
afterStore(fn)
Ajoute un traitement après stockage.
Parameters:
Name | Type | Description |
---|---|---|
fn |
simpleCallback | fonction à exécuter qui doit avoir une callback en paramètre (qui n'aura pas d'arguments) |
- Source:
beforeDelete(fn)
Ajoute un traitement avant suppression
Parameters:
Name | Type | Description |
---|---|---|
fn |
simpleCallback | fonction à exécuter qui doit avoir une callback en paramètre (qui n'aura pas d'arguments) |
- Source:
beforeStore(beforeStoreCallback)
Ajoute une fonction à appliquer avant store
Parameters:
Name | Type | Description |
---|---|---|
beforeStoreCallback |
entityContextCallback |
- Source:
construct(fn)
Ajoute un constructeur (appelé par create avec l'objet qu'on lui donne), s'il n'existe pas
le create affectera à l'entité toutes les valeurs qu'on lui passe
Parameters:
Name | Type | Description |
---|---|---|
fn |
function | Constructeur |
- Source:
count(cb)
Passe à cb le nb d'entity (hors softDeleted, passer par EntityQuery#count si on les veut)
Parameters:
Name | Type | Description |
---|---|---|
cb |
EntityQuery~CountCallback |
- Source:
countBy(index, cb)
Compte le nb d'entité pour chaque valeur de l'index demandé
Parameters:
Name | Type | Description |
---|---|---|
index |
string | |
cb |
EntityQuery~CountByCallback |
- Source:
create(valuesopt) → {Entity}
Retourne une instance Entity à partir de la définition
(appelera defaults s'il existe, puis construct s'il existe et Object.assign sinon)
Attention, si la fonction passée à construct n'attend pas d'argument,
toutes les propriétés de values seront affectée à l'entité !
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
values |
Object |
<optional> |
Des valeurs à injecter dans l'objet. |
- Source:
- To Do:
-
- virer ce comportement et ajouter dans les constructeurs qui l'utilisaient un `Object.assign(this, values)`
Returns:
Une instance de l'entité
- Type
- Entity
defaults(fn)
Ajoute un initialisateur, qui sera toujours appelé par create (avant un éventuel construct)
Parameters:
Name | Type | Description |
---|---|---|
fn |
function | La fonction qui initialisera des valeurs par défaut (sera appelée sans arguments) |
- Source:
defineIndex(indexName, fieldTypeopt, indexOptionsopt, callbackopt) → {EntityDefinition}
Ajoute un indexe à l'entité. Contrairement à la logique SGBD, on ne type pas
l'indexe. En réalité il faut comprendre un index comme "Utilise la valeur du
champ XXX et indexe-la".
Une callback peut être fournie pour fabriquer des valeurs virtuelles. Par exemple :
entity.index('age', 'integer', function() {
return (new Date()).getFullYear() - this.born.getFullYear();
});
Parameters:
Name | Type | Attributes | Description | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
indexName |
String | Nom du champ à indexer (ou de l'index virtuel si on passe une callback) |
|||||||||||||||||||||
fieldType |
String |
<optional> |
Type du champ à indexer ('integer', 'string', 'date') |
||||||||||||||||||||
indexOptions |
Object |
<optional> |
Options d'index mongo ex: {unique: true, sparse: true} Properties
|
||||||||||||||||||||
callback |
function |
<optional> |
Pour définir la valeur de l'index, appelé avec un .call(entity). |
- Source:
Returns:
pour chaînage
- Type
- EntityDefinition
defineMethod(name, fn)
Ajoute une méthode au prototype du constructeur d'entity
Parameters:
Name | Type | Description |
---|---|---|
name |
string | Nom de la méthode |
fn |
function | Méthode |
- Source:
defineTextSearchFields(fields)
Défini les index de recherche fullText
Parameters:
Name | Type | Description |
---|---|---|
fields |
Array.<string> | Array.<Array> | la liste des champs à prendre en compte pour la recherche fulltext, passer un tableau [name, weight] pour fixer un poid ≠ 1 sur le champ concerné |
- Source:
flush(cb)
drop la collection
Parameters:
Name | Type | Description |
---|---|---|
cb |
simpleCallback |
- Source:
getCollection() → {Collection}
Retourne l'objet Collection de mongo de cette EntityDefinition
- Source:
Returns:
- Type
- Collection
getDb() → {Db}
Retourne l'objet db de la connexion à Mongo
À n'utiliser que dans des cas très particuliers pour utiliser directement des commandes du driver mongo
Si lassi ne propose pas la méthode pour votre besoin, il vaudrait mieux l'ajouter à lassi
plutôt que d'utiliser directement cet objet, on vous le donne à vos risques et périls…
- Source:
Returns:
- Type
- Db
getIndex(indexName) → {indexDefinition}
Retourne la définition de l'index demandé
Parameters:
Name | Type | Description |
---|---|---|
indexName |
string |
- Source:
Throws:
-
si index n'est pas un index défini
- Type
- Error
Returns:
- Type
- indexDefinition
getMongoIndexes(cb)
Récupère tous les index existants
Parameters:
Name | Type | Description |
---|---|---|
cb |
indexesCallback |
- Source:
getMongoIndexName(indexName) → {string}
Retourne le nom de l'index mongo associé à un champ
Parameters:
Name | Type | Description |
---|---|---|
indexName |
- Source:
Returns:
- Type
- string
hasIndex(indexName) → {boolean}
Pour savoir si un index est défini
Parameters:
Name | Type | Description |
---|---|---|
indexName |
- Source:
Returns:
- Type
- boolean
match(indexopt) → {EntityQuery}
Retourne un requeteur (sur lequel on pourra chaîner les méthodes de EntityQuery)
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
index |
string |
<optional> |
Un index à matcher en premier, on peut en mettre plusieurs |
- Source:
Returns:
- Type
- EntityQuery
onDuplicate(fn)
Ajoute une fct pour traiter un plantage pour cause de doublon au store
Parameters:
Name | Type | Description |
---|---|---|
fn |
duplicateCallback |
- Source:
onLoad(fn)
Ajoute un traitement après récupération de l'entité en base de donnée
ATTENTION: cette fonction sera appelée très souvent (pour chaque entity retournée) et doit se limiter
à des traitements très simples.
Contrairent aux autres before* ou after*, elle ne prend pas de callback pour le moment car dangereux
en terme de performance - on ne veut pas d'appel asynchrone sur ce genre de fonction - et plus compliqué
à implémenter ici.
Par exemple, sur une entité utilisateur:
this.onLoad(function {
this.$dbPassword = this.password // permettra de voir plus tard si le password a été changé
})
Parameters:
Name | Type | Description |
---|---|---|
fn |
simpleCallback | fonction à exécuter qui ne prend pas de paramètre |
- Source:
setSkipValidation(skipValidation)
Permet de désactiver / réactiver la validation au beforeStore
Parameters:
Name | Type | Description |
---|---|---|
skipValidation |
boolean | si true, on ne vérifiera pas la validation avant le store |
- Source:
trackAttribute(attributeName)
Marque l'attribut comme étant à suivre, pour voir le changement entre le chargement depuis la base et le store
Parameters:
Name | Type | Description |
---|---|---|
attributeName |
string |
- Source:
trackAttributes(attributeName)
Marque les attributs comme étant à suivre, pour voir le changement entre le chargement depuis la base et le store
Parameters:
Name | Type | Description |
---|---|---|
attributeName |
Array.<string> |
- Source:
validate(validateFn)
Ajoute une fonction de validation
Parameters:
Name | Type | Description |
---|---|---|
validateFn |
function |
- Source:
validateJsonSchema(schema, addKeywords)
Définit un json schema pour l'entity, validé lors d'un appel à isValid() ou avant le store d'une entity
Le deuxième argument permet d'ajouter des keywords personnalisés
Parameters:
Name | Type | Description |
---|---|---|
schema |
Object | json schema à valider |
addKeywords |
Object | "keywords" supplémentaires à définir sur ajv, @link {https://github.com/epoberezkin/ajv#api-addkeyword} |
- Source:
validateOnChange(attributeName, validateFn)
Ajoute une fonction de validation sur un attribut particulier et ajoute un trackAttribute dessus.
(donc inutile de faire ce trackAttribute par ailleurs)
Parameters:
Name | Type | Description |
---|---|---|
attributeName |
string | Array.<string> | (on peut en passer plusieurs, ils auront tous la même fct de validation) |
validateFn |
function |
- Source: