Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примените изменения сущности Rayfin в базу данных с помощью rayfin up или rayfin up db apply, и проверьте, что схема достигла сервера.
Редактирование класса rayfin/data/ в само по себе не меняет развернутую базу данных. Rayfin считывает ваши сущности и генерирует конфигурацию Data API Builder (DAB) только если вы явно примените изменения.
Использование rayfin up для обновления приложений
Запускайте npx rayfin up, когда захотите развернуть последние изменения сущностей в приложении Fabric:
npx rayfin up
Эта команда:
- Синхронизирует настройки выполнения.
- Применяет схему базы данных, сгенерированную декораторами в
rayfin/data/. - Создаёт и развертывает статический контент, если включён
staticHosting.
Выполняйте команду после каждого изменения любого файла в rayfin/data/. После первого развертывания последующие запуски обновляют то же развертывание вместо создания нового.
Применяйте только изменения схемы базы данных
Используйте npx rayfin up db apply для применения схемы базы данных без синхронизации настроек выполнения или развертывания статического контента:
npx rayfin up db apply
Эта продвинутая подкоманда полезна, когда вы запускаете фронтенд с npm run dev, бэкенд уже развернут, и вы хотите самостоятельно прорабатывать схему.
Если изменение может привести к потере данных, например, при удалении столбца или переименовании таблицы, CLI блокирует операцию и описывает потенциальное воздействие. После просмотра операций и подтверждения потери данных примените изменение с помощью --force:
npx rayfin up db apply --force
Caution
Эта --force опция может привести к постоянной потере данных. Используйте его только после того, как проанализируете все операции, о которых сообщает CLI.
Проверьте развернутую схему
Предупреждение
Успешное выполнение команды rayfin up или rayfin up db apply не гарантирует, что ваш фронтенд сможет сразу запросить новую или изменённую сущность. Убедитесь, что развертывание работает корректно, прежде чем тестировать объект.
После любого изменения в rayfin/data/ проверьте развертывание:
npx rayfin up status
Если новая или изменённая сущность всё ещё возвращает ошибки GraphQL после того, как развертывание становится здоровым, примените схему явно и затем протестируйте сущность снова:
npx rayfin up db apply
Добавьте --force только если CLI сообщает о потенциально разрушительных изменениях и вы принимаете потерю данных.
Для машиночитаемого статуса развертывания используйте вывод JSON:
npx rayfin up status --json
Вы можете использовать ответ JSON в скрипте, который ждёт здорового развертывания перед дальнейшими проверками.
Следуйте типичному рабочему процессу по схеме
# 1. Edit an entity, such as rayfin/data/Todo.ts.
# 2. Apply the application changes.
npx rayfin up
# 3. Verify that the deployment is healthy.
npx rayfin up status
# 4. If the changed entity still fails, apply the schema explicitly.
npx rayfin up db apply
Если на шаге 4 сообщается о потенциально опасной операции, проверьте её, прежде чем снова запускать команду с --force.
Устранение неполадок, связанных с изменениями схемы
GraphQL возвращает внутреннюю ошибку сервера
Проверьте каждое @text() поле на затронутом объекте на наличие отсутствующего max значения. В Microsoft SQL Server @text() без max создаёт столбец NVARCHAR(MAX), что может препятствовать созданию схемы GraphQL.
Добавьте явные максимальные длины, а затем примените схему:
@text({ max: 200 })
title!: string;
npx rayfin up db apply --force
Просмотрите указанные операции перед использованием --force.
CLI сообщает о потенциально разрушительных изменениях
Просмотрите перечисленные операции, включая удалённые столбцы, типы с суженным диапазоном и переименованные таблицы. Повторно запустите команду с --force только после того, как убедитесь, что потеря данных допустима.
Не удается применить схему
Запустите npx rayfin up status, и подождите, пока сервисы не станут работоспособными, прежде чем повторить применение схемы.
Сервис передачи данных не имеет диалекта
Когда services.data.enabled имеет значение true, настройте dialect: mssql в rayfin/rayfin.yml.
services:
data:
enabled: true
dialect: mssql
Используйте подсказку ИИ
Скопируйте следующий запрос в GitHub Copilot или другой программный агент, имеющий доступ к вашему проекту и терминалу:
I just added a new field to an entity in my Rayfin project's rayfin/data/ folder. Run
`npx rayfin up` to apply the change, then run `npx rayfin up status` to confirm the
deployment is healthy. If querying the changed entity still fails after that, run
`npx rayfin up db apply` and check again. Review any potentially destructive operations with me before using `--force`.