KI-Übersetzungshinweis

Diese Dokumentation wurde automatisch von KI übersetzt.

Sammlung

Überblick

Eine Sammlung (Collection) wird verwendet, um Datenmodelle im System zu definieren, einschließlich Informationen wie Modellnamen, Feldern, Indizes und Verknüpfungen. Sie wird in der Regel über die collection-Methode einer Database-Instanz als Proxy-Einstiegspunkt aufgerufen.

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

// Eine Datenbankinstanz erstellen
const db = new Database({...});

// Ein Datenmodell definieren
db.collection({
  name: 'users',
  // Modellfelder definieren
  fields: [
    // Skalares Feld
    {
      name: 'name',
      type: 'string',
    },

    // Verknüpfungsfeld
    {
      name: 'profile',
      type: 'hasOne' // 'hasMany', 'belongsTo', 'belongsToMany'
    }
  ],
});

Weitere Feldtypen finden Sie unter Felder.

Konstruktor

Signatur

  • constructor(options: CollectionOptions, context: CollectionContext)

Parameter

ParameterTypStandardwertBeschreibung
options.namestring-Bezeichner der Sammlung
options.tableName?string-Name der Datenbanktabelle. Falls nicht angegeben, wird der Wert von options.name verwendet.
options.fields?FieldOptions[]-Felddefinitionen. Details finden Sie unter Feld.
options.model?string | ModelStatic<Model>-Sequelize Model-Typ. Wenn ein string verwendet wird, muss der Modellname zuvor in der Datenbank registriert worden sein.
options.repository?string | RepositoryType-Repository-Typ. Wenn ein string verwendet wird, muss der Repository-Typ zuvor in der Datenbank registriert worden sein.
options.sortable?string | boolean | { name?: string; scopeKey?: string }-Konfiguration für sortierbare Felder. Standardmäßig nicht sortierbar.
options.autoGenId?booleantrueGibt an, ob ein eindeutiger Primärschlüssel automatisch generiert werden soll. Standardmäßig true.
context.databaseDatabase-Die Datenbank im aktuellen Kontext.

Beispiel

Eine Sammlung für Beiträge erstellen:

const posts = new Collection(
  {
    name: 'posts',
    fields: [
      {
        type: 'string',
        name: 'title',
      },
      {
        type: 'double',
        name: 'price',
      },
    ],
  },
  {
    // Bestehende Datenbankinstanz
    database: db,
  },
);

Instanzmitglieder

options

Die initialen Konfigurationsparameter für die Sammlung. Entspricht dem options-Parameter des Konstruktors.

context

Der Kontext, zu dem die aktuelle Sammlung gehört, derzeit hauptsächlich die Datenbankinstanz.

name

Name der Sammlung.

db

Die Datenbankinstanz, zu der sie gehört.

filterTargetKey

Der als Primärschlüssel verwendete Feldname.

isThrough

Gibt an, ob es sich um eine Zwischensammlung handelt.

model

Entspricht dem Sequelize Model-Typ.

repository

Instanz des Daten-Repositorys.

Methoden zur Feldkonfiguration

getField()

Ruft das Feldobjekt mit dem entsprechenden Namen ab, das in der Sammlung definiert ist.

Signatur

  • getField(name: string): Field

Parameter

ParameterTypStandardwertBeschreibung
namestring-Feldname

Beispiel

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

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

setField()

Setzt ein Feld für die Sammlung.

Signatur

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

Parameter

ParameterTypStandardwertBeschreibung
namestring-Feldname
optionsFieldOptions-Feldkonfiguration. Details finden Sie unter Feld.

Beispiel

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

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

setFields()

Setzt mehrere Felder für die Sammlung im Stapelbetrieb.

Signatur

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

Parameter

ParameterTypStandardwertBeschreibung
fieldsFieldOptions[]-Feldkonfiguration. Details finden Sie unter Feld.
resetFieldsbooleantrueGibt an, ob bestehende Felder zurückgesetzt werden sollen.

Beispiel

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

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

removeField()

Entfernt das Feldobjekt mit dem entsprechenden Namen, das in der Sammlung definiert ist.

Signatur

  • removeField(name: string): void | Field

Parameter

ParameterTypStandardwertBeschreibung
namestring-Feldname

Beispiel

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

posts.removeField('title');

resetFields()

Setzt die Felder der Sammlung zurück (leert sie).

Signatur

  • resetFields(): void

Beispiel

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

posts.resetFields();

hasField()

Prüft, ob ein Feldobjekt mit dem entsprechenden Namen in der Sammlung definiert ist.

Signatur

  • hasField(name: string): boolean

Parameter

ParameterTypStandardwertBeschreibung
namestring-Feldname

Beispiel

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

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

findField()

Findet ein Feldobjekt in der Sammlung, das den Kriterien entspricht.

Signatur

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

Parameter

ParameterTypStandardwertBeschreibung
predicate(field: Field) => boolean-Suchkriterien

Beispiel

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

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

forEachField()

Iteriert über die Feldobjekte in der Sammlung.

Signatur

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

Parameter

ParameterTypStandardwertBeschreibung
callback(field: Field) => void-Callback-Funktion

Beispiel

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

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

Methoden zur Indexkonfiguration

addIndex()

Fügt der Sammlung einen Index hinzu.

Signatur

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

Parameter

ParameterTypStandardwertBeschreibung
indexstring | string[]-Feldname(n) für die Indexkonfiguration.
index{ fields: string[], unique?: boolean, [key: string]: any }-Vollständige Konfiguration.

Beispiel

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

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

removeIndex()

Entfernt einen Index aus der Sammlung.

Signatur

  • removeIndex(fields: string[])

Parameter

ParameterTypStandardwertBeschreibung
fieldsstring[]-Kombination von Feldnamen für den zu entfernenden Index.

Beispiel

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

posts.removeIndex(['title']);

Methoden zur Sammlungskonfiguration

remove()

Löscht die Sammlung.

Signatur

  • remove(): void

Beispiel

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

posts.remove();

Datenbankoperationsmethoden

sync()

Synchronisiert die Sammlungsdefinition mit der Datenbank. Zusätzlich zur Standardlogik von Model.sync in Sequelize werden auch Sammlungen verarbeitet, die Verknüpfungsfeldern entsprechen.

Signatur

  • sync(): Promise<void>

Beispiel

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

await posts.sync();

existsInDb()

Prüft, ob die Sammlung in der Datenbank existiert.

Signatur

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

Parameter

ParameterTypStandardwertBeschreibung
options?.transactionTransaction-Transaktionsinstanz

Beispiel

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

const existed = await posts.existsInDb();

console.log(existed); // false

removeFromDb()

Signatur

  • removeFromDb(): Promise<void>

Beispiel

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

// Die Büchersammlung mit der Datenbank synchronisieren
await db.sync();

// Die Büchersammlung aus der Datenbank entfernen
await books.removeFromDb();