Cette documentation a été traduite automatiquement par IA.
La Base de données est un outil d'interaction avec les bases de données fourni par NocoBase, offrant des fonctionnalités très pratiques pour les applications sans code et à code réduit. Actuellement, les bases de données prises en charge sont :
Dans le constructeur Database, vous pouvez configurer la connexion à la base de données en lui passant le paramètre options.
Pour des paramètres de configuration détaillés, veuillez consulter Constructeur.
La Base de données définit la structure de la base de données via les collections. Un objet collection représente une table dans la base de données.
Une fois la structure de la base de données définie, vous pouvez utiliser la méthode sync() pour la synchroniser.
Pour une utilisation plus détaillée des collections, veuillez consulter Collection.
La Base de données manipule les données via les Repositorys.
Pour une utilisation plus détaillée des opérations CRUD, veuillez consulter Repository.
Signature
constructor(options: DatabaseOptions)Crée une instance de base de données.
Paramètres
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
options.host | string | 'localhost' | Hôte de la base de données |
options.port | number | - | Port du service de base de données, avec un port par défaut correspondant à la base de données utilisée |
options.username | string | - | Nom d'utilisateur de la base de données |
options.password | string | - | Mot de passe de la base de données |
options.database | string | - | Nom de la base de données |
options.dialect | string | 'mysql' | Type de base de données |
options.storage? | string | ':memory:' | Mode de stockage pour SQLite |
options.logging? | boolean | false | Activer la journalisation |
options.define? | Object | {} | Paramètres de définition de table par défaut |
options.tablePrefix? | string | '' | Extension NocoBase, préfixe des noms de table |
options.migrator? | UmzugOptions | {} | Extension NocoBase, paramètres liés au gestionnaire de migrations, se référer à l'implémentation Umzug |
addMigration()Ajoute un fichier de migration unique.
Signature
addMigration(options: MigrationItem)Paramètres
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
options.name | string | - | Nom du fichier de migration |
options.context? | string | - | Contexte du fichier de migration |
options.migration? | typeof Migration | - | Classe personnalisée pour le fichier de migration |
options.up | Function | - | Méthode up du fichier de migration |
options.down | Function | - | Méthode down du fichier de migration |
Exemple
addMigrations()Ajoute les fichiers de migration d'un répertoire spécifié.
Signature
addMigrations(options: AddMigrationsOptions): voidParamètres
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
options.directory | string | '' | Répertoire où se trouvent les fichiers de migration |
options.extensions | string[] | ['js', 'ts'] | Extensions de fichier |
options.namespace? | string | '' | Espace de noms |
options.context? | Object | { db } | Contexte du fichier de migration |
Exemple
inDialect()Vérifie si le type de base de données actuel est l'un des types spécifiés.
Signature
inDialect(dialect: string[]): booleanParamètres
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
dialect | string[] | - | Type de base de données, les valeurs possibles sont mysql/postgres/mariadb |
getTablePrefix()Récupère le préfixe des noms de table à partir de la configuration.
Signature
getTablePrefix(): stringcollection()Définit une collection. Cet appel est similaire à la méthode define de Sequelize, créant la structure de la table uniquement en mémoire. Pour la persister dans la base de données, vous devez appeler la méthode sync.
Signature
collection(options: CollectionOptions): CollectionParamètres
Tous les paramètres de configuration options sont cohérents avec le constructeur de la classe collection, veuillez consulter Collection.
Événements
'beforeDefineCollection' : Déclenché avant la définition d'une collection.'afterDefineCollection' : Déclenché après la définition d'une collection.Exemple
getCollection()Récupère une collection définie.
Signature
getCollection(name: string): CollectionParamètres
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
name | string | - | Nom de la collection |
Exemple
hasCollection()Vérifie si une collection spécifiée a été définie.
Signature
hasCollection(name: string): booleanParamètres
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
name | string | - | Nom de la collection |
Exemple
removeCollection()Supprime une collection définie. Elle est uniquement supprimée de la mémoire ; pour persister le changement, vous devez appeler la méthode sync.
Signature
removeCollection(name: string): voidParamètres
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
name | string | - | Nom de la collection |
Événements
'beforeRemoveCollection' : Déclenché avant la suppression d'une collection.'afterRemoveCollection' : Déclenché après la suppression d'une collection.Exemple
import()Importe tous les fichiers d'un répertoire en tant que configurations de collection en mémoire.
Signature
async import(options: { directory: string; extensions?: ImportFileExtension[] }): Promise<Map<string, Collection>>Paramètres
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
options.directory | string | - | Chemin du répertoire à importer |
options.extensions | string[] | ['ts', 'js'] | Extensions de fichier à scanner |
Exemple
La collection définie dans le fichier ./collections/books.ts est la suivante :
Importez la configuration pertinente lors du chargement du plugin :
registerFieldTypes()Enregistre des types de champs personnalisés.
Signature
registerFieldTypes(fieldTypes: MapOf<typeof Field>): voidParamètres
fieldTypes est une paire clé-valeur où la clé est le nom du type de champ et la valeur est la classe du type de champ.
Exemple
registerModels()Enregistre des classes de modèles de données personnalisées.
Signature
registerModels(models: MapOf<ModelStatic<any>>): voidParamètres
models est une paire clé-valeur où la clé est le nom du modèle de données et la valeur est la classe du modèle de données.
Exemple
registerRepositories()Enregistre des classes de Repository personnalisées.
Signature
registerRepositories(repositories: MapOf<RepositoryType>): voidParamètres
repositories est une paire clé-valeur où la clé est le nom du Repository et la valeur est la classe du Repository.
Exemple
registerOperators()Enregistre des opérateurs de requête de données personnalisés.
Signature
registerOperators(operators: MapOf<OperatorFunc>)Paramètres
operators est une paire clé-valeur où la clé est le nom de l'opérateur et la valeur est la fonction qui génère l'instruction de comparaison.
Exemple
getModel()Récupère une classe de modèle de données définie. Si aucune classe de modèle personnalisée n'a été enregistrée précédemment, elle renverra la classe de modèle Sequelize par défaut. Le nom par défaut est le même que celui défini pour la collection.
Signature
getModel(name: string): ModelParamètres
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
name | string | - | Nom du modèle enregistré |
Exemple
Note : La classe de modèle obtenue à partir d'une collection n'est pas strictement égale à la classe de modèle enregistrée, mais en hérite. Étant donné que les propriétés de la classe de modèle de Sequelize sont modifiées pendant le processus d'initialisation, NocoBase gère automatiquement cette relation d'héritage. À l'exception de l'inégalité des classes, toutes les autres définitions peuvent être utilisées normalement.
getRepository()Récupère une classe de Repository personnalisée. Si aucune classe de Repository personnalisée n'a été enregistrée précédemment, elle renverra la classe de Repository NocoBase par défaut. Le nom par défaut est le même que celui défini pour la collection.
Les classes de Repository sont principalement utilisées pour les opérations CRUD basées sur les modèles de données, veuillez consulter Repository.
Signature
getRepository(name: string): RepositorygetRepository(name: string, relationId?: string | number): RepositoryParamètres
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
name | string | - | Nom du Repository enregistré |
relationId | string | number | - | Valeur de la clé étrangère pour les données relationnelles |
Lorsque le nom est un nom d'association tel que 'tables.relations', il renverra la classe de Repository associée. Si le deuxième paramètre est fourni, le Repository sera basé sur la valeur de la clé étrangère des données relationnelles lors de son utilisation (requêtes, mises à jour, etc.).
Exemple
Supposons qu'il existe deux collections, articles et auteurs, et que la collection d'articles contient une clé étrangère pointant vers la collection d'auteurs :
on()Écoute les événements de la base de données.
Signature
on(event: string, listener: (...args: any[]) => void | Promise<void>): voidParamètres
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
| event | string | - | Nom de l'événement |
| listener | Function | - | Écouteur d'événement |
Les noms d'événements prennent en charge les événements de modèle de Sequelize par défaut. Pour les événements globaux, écoutez en utilisant le format <sequelize_model_global_event>, et pour les événements de modèle uniques, utilisez le format <nom_du_modèle>.<sequelize_model_event>.
Pour les descriptions des paramètres et des exemples détaillés de tous les types d'événements intégrés, veuillez consulter la section Événements intégrés.
off()Supprime une fonction d'écoute d'événement.
Signature
off(name: string, listener: Function)Paramètres
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
| name | string | - | Nom de l'événement |
| listener | Function | - | Écouteur d'événement |
Exemple
auth()Authentification de la connexion à la base de données. Peut être utilisée pour s'assurer que l'application a établi une connexion avec les données.
Signature
auth(options: QueryOptions & { retry?: number } = {}): Promise<boolean>Paramètres
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
options? | Object | - | Options d'authentification |
options.retry? | number | 10 | Nombre de tentatives en cas d'échec de l'authentification |
options.transaction? | Transaction | - | Objet de transaction |
options.logging? | boolean | Function | false | Activer l'impression des journaux |
Exemple
reconnect()Se reconnecte à la base de données.
Exemple
closed()Vérifie si la connexion à la base de données est fermée.
Signature
closed(): booleanclose()Ferme la connexion à la base de données. Équivalent à sequelize.close().
sync()Synchronise la structure des collections de la base de données. Équivalent à sequelize.sync(), pour les paramètres, veuillez consulter la documentation Sequelize.
clean()Nettoie la base de données, supprimant toutes les collections.
Signature
clean(options: CleanOptions): Promise<void>Paramètres
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
options.drop | boolean | false | Supprimer toutes les collections |
options.skip | string[] | - | Configuration des noms de collections à ignorer |
options.transaction | Transaction | - | Objet de transaction |
Exemple
Supprime toutes les collections à l'exception de la collection users.
defineCollection()Crée le contenu de configuration d'une collection.
Signature
defineCollection(name: string, config: CollectionOptions): CollectionOptionsParamètres
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
collectionOptions | CollectionOptions | - | Identique à tous les paramètres de db.collection() |
Exemple
Pour un fichier de configuration de collection à importer par db.import() :
extendCollection()Étend le contenu de la configuration d'une structure de collection déjà en mémoire, principalement pour le contenu de fichier importé par la méthode import(). Cette méthode est une méthode de haut niveau exportée par le paquet @nocobase/database et n'est pas appelée via une instance de base de données. L'alias extend peut également être utilisé.
Signature
extendCollection(collectionOptions: CollectionOptions, mergeOptions?: MergeOptions): ExtendedCollectionOptionsParamètres
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
collectionOptions | CollectionOptions | - | Identique à tous les paramètres de db.collection() |
mergeOptions? | MergeOptions | - | Paramètres pour le paquet npm deepmerge |
Exemple
Définition originale de la collection books (books.ts) :
Définition étendue de la collection books (books.extend.ts) :
Si les deux fichiers ci-dessus sont importés lors de l'appel à import(), après avoir été étendus à nouveau avec extend(), la collection books aura les champs title et price.
Cette méthode est très utile pour étendre les structures de collection déjà définies par des plugins existants.
La base de données déclenche les événements correspondants suivants à différentes étapes de son cycle de vie. S'y abonner avec la méthode on() permet un traitement spécifique pour répondre à certains besoins métier.
'beforeSync' / 'afterSync'Déclenché avant et après la synchronisation d'une nouvelle configuration de structure de collection (champs, index, etc.) avec la base de données. Il est généralement déclenché lors de l'exécution de collection.sync() (appel interne) et est souvent utilisé pour gérer la logique d'extensions de champs spécifiques.
Signature
Type
Exemple
'beforeValidate' / 'afterValidate'Avant de créer ou de mettre à jour des données, un processus de validation est effectué sur la base des règles définies dans la collection. Des événements correspondants sont déclenchés avant et après la validation. Cela se produit lors de l'appel de repository.create() ou repository.update().
Signature
Type
Exemple
'beforeCreate' / 'afterCreate'Des événements correspondants sont déclenchés avant et après la création d'un enregistrement. Cela se produit lors de l'appel de repository.create().
Signature
Type
Exemple
'beforeUpdate' / 'afterUpdate'Des événements correspondants sont déclenchés avant et après la mise à jour d'un enregistrement. Cela se produit lors de l'appel de repository.update().
Signature
Type
Exemple
'beforeSave' / 'afterSave'Des événements correspondants sont déclenchés avant et après la création ou la mise à jour d'un enregistrement. Cela se produit lors de l'appel de repository.create() ou repository.update().
Signature
Type
Exemple
'beforeDestroy' / 'afterDestroy'Des événements correspondants sont déclenchés avant et après la suppression d'un enregistrement. Cela se produit lors de l'appel de repository.destroy().
Signature
Type
Exemple
'afterCreateWithAssociations'Cet événement est déclenché après la création d'un enregistrement avec des données d'association hiérarchiques. Il se produit lors de l'appel de repository.create().
Signature
Type
Exemple
'afterUpdateWithAssociations'Cet événement est déclenché après la mise à jour d'un enregistrement avec des données d'association hiérarchiques. Il se produit lors de l'appel de repository.update().
Signature
Type
Exemple
'afterSaveWithAssociations'Cet événement est déclenché après la création ou la mise à jour d'un enregistrement avec des données d'association hiérarchiques. Il se produit lors de l'appel de repository.create() ou repository.update().
Signature
Type
Exemple
'beforeDefineCollection'Déclenché avant la définition d'une collection, par exemple lors de l'appel de db.collection().
Note : Cet événement est synchrone.
Signature
Type
Exemple
'afterDefineCollection'Déclenché après la définition d'une collection, par exemple lors de l'appel de db.collection().
Note : Cet événement est synchrone.
Signature
Type
Exemple
'beforeRemoveCollection' / 'afterRemoveCollection'Déclenché avant et après la suppression d'une collection de la mémoire, par exemple lors de l'appel de db.removeCollection().
Note : Cet événement est synchrone.
Signature
Type
Exemple