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