logologo
スタート
マニュアル
開発
プラグイン
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
スタート
マニュアル
開発
プラグイン
API
logologo
ユーザー

ロールと権限

ロール設定
権限設定
UIへの適用
ロールの和集合

開発ガイド

権限設定欄の拡張

部署

部署管理
部署ロール管理

ユーザーデータ同期

同期管理

データソース

企業WeChat
HTTP API

開発ガイド

同期データソースの拡張
同期先リソースの拡張
Previous Page同期データソースの拡張
TIP

このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください

#同期ターゲットリソースの拡張

#概要

NocoBaseは、ユーザーデータをユーザーテーブルと部門テーブルに同期する機能を標準でサポートしています。さらに、必要に応じてデータ同期のターゲットリソースを拡張し、他のテーブルへのデータ書き込みや、カスタム処理を実行することも可能です。

実験的

完全なドキュメントは後日追加されます。

#ターゲットリソースハンドラーインターフェース

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

#ターゲットリソースの登録

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