Внешний источник данных и вложения (файлы)

Добрый день, команда NocoBase!

Есть такая проблема: хочу использовать подключение к внешней базе данных (Oracle) и при этом иметь возможность загружать файлы в мое приложение.

В сравнении источников Main и внешнего (External Data Source)
https://docs.nocobase.com/handbook/data-modeling/main-vs-external-data-sources
даны рекомендации:

  • Если вы используете NocoBase для создания новой бизнес-системы, используйте основную базу данных, которая позволит вам использовать все функциональные возможности NocoBase.
  • Если вы используете NocoBase для подключения к базам данных других систем для выполнения базовых операций CRUD, то используйте внешние базы данных.

Получается, что при подключении к БД Oracle, я могу только редактировать таблицы, но загружать файлы и связывать их с записями коллекций из внешнего источника не могу – такого функционала на текущий момент в NocoBase нет.

Вот какие варианты пробовал:

1 Создать коллекцию файлов в основном источнике и связать её с синхронизированной коллекцией из внешнего источника. Проблема: NocoBase не дает связывать коллекции из разных источников.

2 «Отметить» коллекцию во внешнем источнике как «файловую коллекцию» тоже нельзя, после синхронизации с БД все таблицы внешнего источника определяются просто как обычные коллекции. В форме редактирования записи UI я не могу выбрать компонент поля «Менеджер файлов» для поля-ассоциации, которое указывает на коллекцию с файлами.

3 Еще пробовал решение через oracle_fdw: создать foreign tables в БД, их обернуть в редактируемые View, и подключиться к ним из основного источника (main). Это дало результат (!), однако хотелось бы не использовать этот метод из «костыльности». Хотелось бы подключаться к имеющейся структуре БД через коммерческий плагин Oracle SQL и при этом иметь возможность привязывать файловые коллекции к обычным.

Подскажите, пожалуйста, есть ли на текущий момент какой-нибудь способ это реализовать?

Please map the data table field to NocoBase’s “Attachment (URL)” to upload attachments normally.

Спасибо, этот способ работает!

Однако, Attachment (URL) обладает ограничениями по сравнению с Attachment (Association). Например, нельзя загрузить несколько файлов для одной записи, а только один, и имя скачанного файла всегда undefinedundefined.

Я все-таки нашел способ связать коллекцию из External Data Source и коллекцию файлов из основного источника Main через ассоциацию, используя oracle_fdw и коллекцию типа “connect to database view” (foreign table обернута во view в этой же базе в схеме public). Решение тоже неидеальное, но так удобнее работать с загрузкой файлов.

1 Like