logologo
Start
Handbuch
Entwicklung
Plugins
API
Startseite
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Start
Handbuch
Entwicklung
Plugins
API
Startseite
logologo
RunJS Übersicht
Module importieren
Rendern im Container

Globale Variablen

window
document
navigator

ctx

ctx.blockModel
ctx.collection
ctx.collectionField
ctx.dataSource
ctx.dataSourceManager
ctx.element
ctx.exit()
ctx.exitAll()
ctx.filterManager
ctx.form
ctx.getModel()
ctx.getValue()
ctx.getVar()
ctx.i18n
ctx.importAsync()
ctx.initResource()
ctx.libs
ctx.location
ctx.logger
ctx.makeResource()
ctx.message
ctx.modal
ctx.model
ctx.notification
ctx.off()
ctx.on()
ctx.openView()
ctx.render()
ctx.request()
ctx.requireAsync()
ctx.resource
ctx.route
ctx.router
ctx.setValue()
ctx.sql
ctx.t()
ctx.view
Previous Pagectx.collectionField
Next Pagectx.dataSourceManager
KI-Übersetzungshinweis

Dieses Dokument wurde von KI übersetzt. Für genaue Informationen lesen Sie bitte die englische Version.

#ctx.dataSource

Die an den aktuellen RunJS-Ausführungskontext gebundene Datenquelle-Instanz (DataSource), die verwendet wird, um auf Sammlungen, Feld-Metadaten zuzugreifen und Sammlungs-Konfigurationen innerhalb der aktuellen Datenquelle zu verwalten. Sie entspricht normalerweise der für die aktuelle Seite oder den aktuellen Block ausgewählten Datenquelle (z. B. die Hauptdatenbank main).

#Anwendungsbereiche

SzenarioBeschreibung
Operationen auf einer einzelnen DatenquelleAbrufen von Sammlungs- und Feld-Metadaten, wenn die aktuelle Datenquelle bekannt ist.
Verwaltung von SammlungenAbrufen, Hinzufügen, Aktualisieren oder Löschen von Sammlungen unter der aktuellen Datenquelle.
Felder über Pfade abrufenVerwendung des Formats sammlungsName.feldPfad, um Felddefinitionen abzurufen (unterstützt Verknüpfungspfade).

Hinweis: ctx.dataSource repräsentiert eine einzelne Datenquelle für den aktuellen Kontext. Um andere Datenquellen aufzuzählen oder darauf zuzugreifen, verwenden Sie bitte ctx.dataSourceManager.

#Typdefinition

dataSource: DataSource;

class DataSource {
  constructor(options?: Record<string, any>);

  // Schreibgeschützte Eigenschaften
  get flowEngine(): FlowEngine;   // Aktuelle FlowEngine-Instanz
  get displayName(): string;      // Anzeigename (unterstützt i18n)
  get key(): string;              // Datenquellen-Key, z. B. 'main'
  get name(): string;             // Entspricht dem Key

  // Lesen von Sammlungen
  getCollections(): Collection[];                      // Alle Sammlungen abrufen
  getCollection(name: string): Collection | undefined; // Sammlung nach Name abrufen
  getAssociation(associationName: string): CollectionField | undefined; // Verknüpfungs feld abrufen (z. B. users.roles)

  // Verwaltung von Sammlungen
  addCollection(collection: Collection | CollectionOptions): void;
  updateCollection(newOptions: CollectionOptions): void;
  upsertCollection(options: CollectionOptions): Collection | undefined;
  upsertCollections(collections: CollectionOptions[], options?: { clearFields?: boolean }): void;
  removeCollection(name: string): void;
  clearCollections(): void;

  // Feld-Metadaten
  getCollectionField(fieldPath: string): CollectionField | undefined;
}

#Häufig genutzte Eigenschaften

EigenschaftTypBeschreibung
keystringDatenquellen-Key, z. B. 'main'
namestringEntspricht dem Key
displayNamestringAnzeigename (unterstützt i18n)
flowEngineFlowEngineAktuelle FlowEngine-Instanz

#Häufig genutzte Methoden

MethodeBeschreibung
getCollections()Ruft alle Sammlungen unter der aktuellen Datenquelle ab (sortiert, versteckte gefiltert).
getCollection(name)Ruft eine Sammlung nach Name ab; name kann sammlungsName.feldName sein, um die Ziel-Sammlung einer Verknüpfung abzurufen.
getAssociation(associationName)Ruft eine Verknüpfungsfeld-Definition über sammlungsName.feldName ab.
getCollectionField(fieldPath)Ruft eine Felddefinition über sammlungsName.feldPfad ab, unterstützt Verknüpfungspfade wie users.profile.avatar.

#Beziehung zu ctx.dataSourceManager

AnforderungEmpfohlene Verwendung
Einzelne an den aktuellen Kontext gebundene Datenquellectx.dataSource
Einstiegspunkt für alle Datenquellenctx.dataSourceManager
Sammlung innerhalb der aktuellen Datenquelle abrufenctx.dataSource.getCollection(name)
Datenquellenübergreifendes Abrufen von Sammlungenctx.dataSourceManager.getCollection(dataSourceKey, collectionName)
Feld innerhalb der aktuellen Datenquelle abrufenctx.dataSource.getCollectionField('users.profile.avatar')
Datenquellenübergreifendes Abrufen von Feldernctx.dataSourceManager.getCollectionField('main.users.profile.avatar')

#Beispiel

#Sammlungen und Felder abrufen

// Alle Sammlungen abrufen
const collections = ctx.dataSource.getCollections();

// Sammlung nach Name abrufen
const users = ctx.dataSource.getCollection('users');
const primaryKey = users?.filterTargetKey ?? 'id';

// Felddefinition über "sammlungsName.feldPfad" abrufen (unterstützt Verknüpfungen)
const field = ctx.dataSource.getCollectionField('users.profile.avatar');
const userNameField = ctx.dataSource.getCollectionField('orders.createdBy.name');

#Verknüpfungsfelder abrufen

// Verknüpfungsfeld-Definition über sammlungsName.feldName abrufen
const rolesField = ctx.dataSource.getAssociation('users.roles');
if (rolesField?.isAssociationField()) {
  const targetCol = rolesField.targetCollection;
  // Basierend auf der Struktur der Ziel-Sammlung verarbeiten
}

#Sammlungen für dynamische Verarbeitung durchlaufen

const collections = ctx.dataSource.getCollections();
for (const col of collections) {
  const fields = col.getFields();
  const requiredFields = fields.filter((f) => f.options?.required);
  // ...
}

#Validierung oder dynamische Benutzeroberfläche basierend auf Feld-Metadaten durchführen

const field = ctx.dataSource.getCollectionField('users.status');
if (field) {
  const options = field.enum ?? [];
  const operators = field.getFilterOperators();
  // UI-Logik oder Validierung basierend auf Interface, Enum, Validierung usw. durchführen
}

#Hinweise

  • Das Pfadformat für getCollectionField(fieldPath) ist sammlungsName.feldPfad, wobei das erste Segment der Name der Sammlung ist und die folgenden Segmente der Feldpfad sind (unterstützt Verknüpfungen, z. B. user.name).
  • getCollection(name) unterstützt das Format sammlungsName.feldName und gibt die Ziel-Sammlung des Verknüpfungsfeldes zurück.
  • Im RunJS-Kontext wird ctx.dataSource normalerweise durch die Datenquelle des aktuellen Blocks oder der aktuellen Seite bestimmt. Wenn keine Datenquelle an den Kontext gebunden ist, kann sie undefined sein; es wird empfohlen, vor der Verwendung eine Prüfung auf Nullwerte durchzuführen.

#Verwandte Themen

  • ctx.dataSourceManager: Datenquellen-Manager, verwaltet alle Datenquellen.
  • ctx.collection: Die mit dem aktuellen Kontext verknüpfte Sammlung.
  • ctx.collectionField: Die Sammlungsfeld-Definition für das aktuelle Feld.