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

Role i uprawnienia

Konfiguracja ról
Konfiguracja uprawnień
Zastosowanie w interfejsie
Suma ról

Przewodnik dewelopera

Rozszerzanie paska konfiguracji uprawnień

Działy

Zarządzanie działami
Zarządzanie rolami działów

Synchronizacja danych użytkowników

Zarządzanie synchronizacją

Źródła danych

WeChat Work
HTTP API

Przewodnik dewelopera

Rozszerzanie źródeł synchronizacji
Rozszerzanie celów synchronizacji
Previous PageRozszerzanie źródeł synchronizacji
TIP

Ten dokument został przetłumaczony przez AI. W przypadku niedokładności, proszę odnieść się do wersji angielskiej

#Rozszerzanie zasobów docelowych synchronizacji

#Przegląd

NocoBase domyślnie wspiera synchronizację danych użytkowników z tabelami Użytkownicy i Działy. Umożliwia również rozszerzanie zasobów docelowych synchronizacji danych, aby zapisywać dane do innych tabel lub wykonywać niestandardowe przetwarzanie, zgodnie z Państwa potrzebami.

Eksperymentalne

Pełna dokumentacja jest w przygotowaniu.

#Interfejs obsługi zasobów docelowych

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');
  }
}

#Rejestrowanie zasobów docelowych

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),
      );
    }
  }
}