Εφαρμογή και επαλήθευση αλλαγών σχήματος σε εφαρμογές Fabric

Εφαρμόστε αλλαγές οντότητας 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

Προσοχή

Η --force επιλογή μπορεί να προκαλέσει μόνιμη απώλεια δεδομένων. Χρησιμοποιήστε το μόνο αφού ελέγξετε κάθε λειτουργία που αναφέρεται από το CLI.

Επαλήθευση του αναπτυγμένου σχήματος

Προειδοποίηση

Μια επιτυχής rayfin up εντολή ή rayfin up db apply εντολή δεν εγγυάται ότι το frontend σας μπορεί να υποβάλει αμέσως ερώτημα σε μια νέα ή τροποποιημένη οντότητα. Βεβαιωθείτε ότι η ανάπτυξη είναι υγιής πριν δοκιμάσετε την οντότητα.

Μετά από οποιαδήποτε αλλαγή στο 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

Χρησιμοποιήστε μια προτροπή AI

Αντιγράψτε την ακόλουθη προτροπή στο 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`.