Collection References

Плагин для Payload CMS, который автоматически удаляет или обнуляет ссылки на документ при его удалении.

Сообщество 2 2/нед MIT v1.0.2

Установка

pnpm add @lizardglobal/payload-collection-references

Описание

В Payload поле типа `relationship` или `upload` может указывать на документ, который уже не существует. Плагин закрывает эту проблему. При инициализации конфигурации он обходит дерево полей каждого целевого коллекции, включая группы, вкладки и массивы, и находит все поля `relationship` и `upload` по путям в dot-нотации. Затем на каждую коллекцию, на которую кто-то ссылается, добавляется хук `beforeDelete`. При удалении документа хук опрашивает все ссылающиеся коллекции и для каждого поля применяет одну из двух стратегий. Стратегия `delete` каскадно удаляет ссылающиеся документы и заново запускает их собственные хуки `beforeDelete`. Стратегия `unlink` сохраняет документ, но устанавливает поле в `null` или в заданное значение `unlinkValue`. По умолчанию для автоматически найденных полей используется `delete`, но явные объявления переопределяют стратегию для конкретного поля. Конфигурация минимальна. Вызовите `collectionReferencesPlugin()` без аргументов, чтобы применить плагин ко всем коллекциям, или передайте `collections` для разрешительного списка, `exclude` для запретительного списка и `declarations` для переопределения отдельных полей с вложенными путями вроде `seo.ogImage`. Флаг `disabled` превращает плагин в заглушку, что удобно для тестовых окружений. Циклические ссылки между коллекциями отслеживаются через `req.context`, чтобы избежать бесконечных циклов. Для проектов, где нужен ручной контроль, доступно отдельное API: функция `withCollectionReferences` оборачивает конфиг одной коллекции, `finalizeCollectionReferences` разрешает набор ссылок, а вспомогательные функции вроде `getReferencesPointingTo`, `buildWhereForReferences` и `groupReferencesByCollection` открывают доступ к внутренностям. Плагин работает с Payload `^3.84.1` и требует Node >=20. Он помечен как экспериментальный: схемы коллекций и поведение могут меняться между релизами, поэтому фиксируйте версию явно. Лицензия MIT, код написан на TypeScript.

О пакете

Имя пакета
@lizardglobal/payload-collection-references
Последняя версия
1.0.2
Размер
77 кБ
Лицензия
MIT
Загрузок в неделю
2
Последняя публикация
4 авг. 2026 г.

Ещё от LizardGlobalGH

Профиль автора