KI-Übersetzungshinweis

Diese Dokumentation wurde automatisch von KI übersetzt.

Erweitern von Synchronisierungs-Zielressourcen

Übersicht

NocoBase unterstützt standardmäßig die Synchronisierung von Benutzerdaten mit den Tabellen Benutzer und Abteilung. Sie können die Zielressourcen für die Datensynchronisierung jedoch auch erweitern, um Daten in andere Tabellen zu schreiben oder eine benutzerdefinierte Verarbeitung durchzuführen.

Experimentell

Die vollständige Dokumentation wird noch ergänzt.

Schnittstelle zur Verarbeitung von Zielressourcen

export abstract class UserDataResource {
  name: string;
  accepts: SyncAccept[];
  db: Database;
  logger: SystemLogger;

  constructor(db: Database, logger: SystemLogger) {
    this.db = db;
    this.logger = logger;
  }

  abstract update(
    record: OriginRecord,
    resourcePks: PrimaryKey[],
    matchKey?: string,
  ): Promise<RecordResourceChanged[]>;
  abstract create(
    record: OriginRecord,
    matchKey: string,
  ): Promise<RecordResourceChanged[]>;

  get syncRecordRepo() {
    return this.db.getRepository('userDataSyncRecords');
  }

  get syncRecordResourceRepo() {
    return this.db.getRepository('userDataSyncRecordsResources');
  }
}

Registrieren von Zielressourcen

registerResource(resource: UserDataResource, options?: ToposortOptions)

import { Plugin } from '@nocobase/server';
import PluginUserDataSyncServer from '@nocobase/plugin-user-data-sync';

class CustomUserResourcePluginServer extends Plugin {
  async load() {
    const userDataSyncPlugin = this.app.pm.get(PluginUserDataSyncServer);
    if (userDataSyncPlugin && userDataSyncPlugin.enabled) {
      userDataSyncPlugin.resourceManager.registerResource(
        new CustomDataSyncResource(this.db, this.app.logger),
      );
    }
  }
}