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