logologo
Démarrer
Manuel
Développement
Plugins
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Démarrer
Manuel
Développement
Plugins
API
logologo
Aperçu de l'API

@nocobase/auth

AuthManager
Auth
BaseAuth

@nocobase/cache

CacheManager
Cache

@nocobase/cli

CLI NocoBase
Variables d'environnement globales

@nocobase/client

Application
Plugin

@nocobase/database

Collection
Champ

interfaces

BaseInterface
Opérateurs de filtre

RelationRepository

BelongsToManyRepository
belongs-to-repository
HasManyRepository
HasOneRepository
Dépôt

shared

create-options
destroy-options
find-one
find-options
transaction
update-options

@nocobase/data-source-manager

DataSourceManager
DataSource (abstraite)
ICollectionManager
ICollection
IField
IModel
IRepository

@nocobase/flow-engine

Gestionnaire de sources de données
Contexte de Flux
FlowEngine
FlowModel
Ressource de flux

@nocobase/logger

Logger

@nocobase/server

AppCommand
Application
AuditManager
Contexte
Migration
Plugin

@nocobase/sdk

Auth
Stockage
Previous Page@nocobase/database
Next PageChamp
Avis de traduction IA

Cette documentation a été traduite automatiquement par IA.

#Collection

#Aperçu

Une collection est utilisée pour définir les modèles de données dans le système, incluant des informations telles que les noms de modèles, les champs, les index et les associations. Vous l'appelez généralement via la méthode collection d'une instance Database, qui sert de point d'entrée.

const { Database } = require('@nocobase/database')

// Crée une instance de base de données
const db = new Database({...});

// Définit un modèle de données
db.collection({
  name: 'users',
  // Définit les champs du modèle
  fields: [
    // Champ scalaire
    {
      name: 'name',
      type: 'string',
    },

    // Champ d'association
    {
      name: 'profile',
      type: 'hasOne' // 'hasMany', 'belongsTo', 'belongsToMany'
    }
  ],
});

Pour plus de types de champs, veuillez consulter Fields.

#Constructeur

Signature

  • constructor(options: CollectionOptions, context: CollectionContext)

Paramètres

ParamètreTypeValeur par défautDescription
options.namestring-Identifiant de la collection
options.tableName?string-Nom de la table de base de données. Si non fourni, la valeur de options.name sera utilisée.
options.fields?FieldOptions[]-Définitions des champs. Voir Field pour plus de détails.
options.model?string | ModelStatic<Model>-Type de modèle Sequelize. Si une string est utilisée, le nom du modèle doit avoir été préalablement enregistré sur la base de données.
options.repository?string | RepositoryType-Type de dépôt de données. Si une string est utilisée, le type de dépôt doit avoir été préalablement enregistré sur la base de données.
options.sortable?string | boolean | { name?: string; scopeKey?: string }-Configuration du champ de tri. Non triable par défaut.
options.autoGenId?booleantrueIndique si une clé primaire unique doit être générée automatiquement. Par défaut à true.
context.databaseDatabase-La base de données dans le contexte actuel.

Exemple

Créez une collection d'articles :

const posts = new Collection(
  {
    name: 'posts',
    fields: [
      {
        type: 'string',
        name: 'title',
      },
      {
        type: 'double',
        name: 'price',
      },
    ],
  },
  {
    // Instance de base de données existante
    database: db,
  },
);

#Membres d'instance

#options

Paramètres de configuration initiaux de la collection. Identiques au paramètre options du constructeur.

#context

Le contexte auquel appartient la collection actuelle, principalement l'instance de base de données.

#name

Nom de la collection.

#db

L'instance de base de données à laquelle elle appartient.

#filterTargetKey

Le nom du champ utilisé comme clé primaire.

#isThrough

Indique s'il s'agit d'une collection intermédiaire.

#model

Correspond au type de modèle Sequelize.

#repository

Instance du dépôt de données.

#Méthodes de configuration des champs

#getField()

Récupère l'objet champ correspondant au nom défini dans la collection.

Signature

  • getField(name: string): Field

Paramètres

ParamètreTypeValeur par défautDescription
namestring-Nom du champ

Exemple

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

const field = posts.getField('title');

#setField()

Définit un champ pour la collection.

Signature

  • setField(name: string, options: FieldOptions): Field

Paramètres

ParamètreTypeValeur par défautDescription
namestring-Nom du champ
optionsFieldOptions-Configuration du champ. Voir Field pour plus de détails.

Exemple

const posts = db.collection({ name: 'posts' });

posts.setField('title', { type: 'string' });

#setFields()

Définit plusieurs champs pour la collection en une seule fois.

Signature

  • setFields(fields: FieldOptions[], resetFields = true): Field[]

Paramètres

ParamètreTypeValeur par défautDescription
fieldsFieldOptions[]-Configuration des champs. Voir Field pour plus de détails.
resetFieldsbooleantrueIndique si les champs existants doivent être réinitialisés.

Exemple

const posts = db.collection({ name: 'posts' });

posts.setFields([
  { type: 'string', name: 'title' },
  { type: 'double', name: 'price' },
]);

#removeField()

Supprime l'objet champ correspondant au nom défini dans la collection.

Signature

  • removeField(name: string): void | Field

Paramètres

ParamètreTypeValeur par défautDescription
namestring-Nom du champ

Exemple

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.removeField('title');

#resetFields()

Réinitialise (vide) les champs de la collection.

Signature

  • resetFields(): void

Exemple

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.resetFields();

#hasField()

Vérifie si un objet champ correspondant au nom est défini dans la collection.

Signature

  • hasField(name: string): boolean

Paramètres

ParamètreTypeValeur par défautDescription
namestring-Nom du champ

Exemple

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.hasField('title'); // true

#findField()

Recherche un objet champ dans la collection qui correspond aux critères.

Signature

  • findField(predicate: (field: Field) => boolean): Field | undefined

Paramètres

ParamètreTypeValeur par défautDescription
predicate(field: Field) => boolean-Critères de recherche

Exemple

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.findField((field) => field.name === 'title');

#forEachField()

Itère sur les objets champs de la collection.

Signature

  • forEachField(callback: (field: Field) => void): void

Paramètres

ParamètreTypeValeur par défautDescription
callback(field: Field) => void-Fonction de rappel

Exemple

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.forEachField((field) => console.log(field.name));

#Méthodes de configuration des index

#addIndex()

Ajoute un index à la collection.

Signature

  • addIndex(index: string | string[] | { fields: string[], unique?: boolean,[key: string]: any })

Paramètres

ParamètreTypeValeur par défautDescription
indexstring | string[]-Nom(s) du/des champ(s) à indexer.
index{ fields: string[], unique?: boolean, [key: string]: any }-Configuration complète.

Exemple

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.addIndex({
  fields: ['title'],
  unique: true,
});

#removeIndex()

Supprime un index de la collection.

Signature

  • removeIndex(fields: string[])

Paramètres

ParamètreTypeValeur par défautDescription
fieldsstring[]-Combinaison des noms de champs pour l'index à supprimer.

Exemple

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
  indexes: [
    {
      fields: ['title'],
      unique: true,
    },
  ],
});

posts.removeIndex(['title']);

#Méthodes de configuration de la collection

#remove()

Supprime la collection.

Signature

  • remove(): void

Exemple

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.remove();

#Méthodes d'opération sur la base de données

#sync()

Synchronise la définition de la collection avec la base de données. En plus de la logique par défaut de Model.sync dans Sequelize, cette méthode gère également les collections correspondant aux champs d'association.

Signature

  • sync(): Promise<void>

Exemple

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

await posts.sync();

#existsInDb()

Vérifie si la collection existe dans la base de données.

Signature

  • existsInDb(options?: Transactionable): Promise<boolean>

Paramètres

ParamètreTypeValeur par défautDescription
options?.transactionTransaction-Instance de transaction

Exemple

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

const existed = await posts.existsInDb();

console.log(existed); // false

#removeFromDb()

Signature

  • removeFromDb(): Promise<void>

Exemple

const books = db.collection({
  name: 'books',
});

// Synchronise la collection de livres avec la base de données
await db.sync();

// Supprime la collection de livres de la base de données
await books.removeFromDb();