Validering af data med regler
Brug sikkerhedsregler til at validere indgående data, så de følger de forventede formater og forhindrer skadelige skrivninger.
Validering af data med regler er en gratis Firebase-godkendelse og apps med realtidsdatabase-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Firebase-godkendelse og apps med realtidsdatabase, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Firebase-godkendelse og apps med realtidsdatabase-kurset indeholder 4 lektioner i alt.
Hvorfor validere data?
Velkommen til lektion 3! I denne lektion lærer du at bruge Firebase Realtime Database Security Rules til at validere indgående data. Det er meget vigtigt for at:
- forhindre ugyldige eller skadelige data i at komme ind i databasen
- bevare integriteten og ensartetheden af programmets data
- sikre, at data overholder de forventede formater og typer
Tænk på det som en dørmand for din database!
Introduktion til newData og .validate()
Når der skrives data til din database, stiller Firebase et særligt objekt ved navn newData til rådighed. Dette objekt repræsenterer de data, der er ved at blive skrevet.
Vi bruger reglen .validate() til at definere betingelser, som newData skal opfylde. Hvis betingelserne ikke er opfyldt, afvises skrivehandlingen.
Her er et grundlæggende eksempel:
{
"rules": {
"posts": {
"$postId": {
// Allow anyone authenticated to write
".write": "auth != null",
// Validate that new posts must have 'title' and 'content'
".validate": "newData.hasChildren(['title', 'content'])"
}
}
}
}Kontrol af datatyper
En af de mest almindelige valideringer er at kontrollere datatypen. Du kan sikre, at felter er tekststrenge, tal, boolske værdier eller endda null.
Det hjælper med at forhindre, at brugere for eksempel indsender et tal, hvor der forventes et navn (en tekststreng).
{
"rules": {
"users": {
"$userId": {
"name": { ".validate": "newData.isString()" },
"age": { ".validate": "newData.isNumber()" },
"isActive": { ".validate": "newData.isBoolean()" }
}
}
}
}Gør felter obligatoriske
Nogle gange er bestemte felter absolut påkrævede. Du kan bruge newData.hasChildren(['field1', 'field2']) til at sikre, at flere felter findes, eller tilgå et underordnet felt direkte for at kontrollere, om det findes.
Hvis et påkrævet felt mangler, mislykkes skrivningen.
{
"rules": {
"messages": {
"$messageId": {
".validate": "newData.hasChildren(['senderId', 'text'])"
}
}
}
}Styring af tekstlængder
For tekstfelter vil du ofte begrænse minimums- eller maksimumslængden. Det forhindrer input, der er for kort eller for langt.
Du kan bruge egenskaben .length på en tekstværdi.
{
"rules": {
"products": {
"$productId": {
"name": {
".validate": "newData.isString() && newData.val().length > 2 && newData.val().length < 50"
}
}
}
}
}Angivelse af talintervaller
For numeriske data kan det være nødvendigt at sikre, at værdierne ligger inden for et bestemt interval. En alder skal for eksempel være positiv, eller en score skal ligge mellem 0 og 100.
Du kan bruge almindelige sammenligningsoperatorer (>, <, >=, <=).
{
"rules": {
"scores": {
"$scoreId": {
"value": {
".validate": "newData.isNumber() && newData.val() >= 0 && newData.val() <= 100"
}
}
}
}
}Avanceret mønstergenkendelse
Til mere komplekse tekstformater som e-mailadresser eller webadresser kan du bruge regulære udtryk sammen med funktionen .matches().
Regulære udtryk er effektive mønstre til at matche tekst. De kan virke skræmmende i begyndelsen, men er meget nyttige!
{
"rules": {
"profiles": {
"$profileId": {
"email": {
// Basic email regex pattern validation
".validate": "newData.isString() && newData.val().matches(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i)"
}
}
}
}
}Kombination af valideringsregler
Du får ofte brug for at kombinere flere valideringskontroller. Du kan bruge logiske operatorer:
&&(OG): Alle betingelser skal være sande.||(ELLER): Mindst én betingelse skal være sand.
Det giver en meget fleksibel og robust valideringslogik.
{
"rules": {
"tasks": {
"$taskId": {
".validate": "newData.hasChildren(['title', 'status']) && newData.child('title').isString() && newData.child('title').val().length > 5"
}
}
}
}Eksempel på validering af brugerprofil
Lad os samle det hele i et omfattende eksempel på en brugerprofil:
username: skal være en tekststreng på mindst 3 tegn.email: skal være en tekststreng og matche et regulært e-mailudtryk.age: skal være et tal på mindst 13.
{
"rules": {
"userProfiles": {
"$userId": {
".validate": "newData.hasChildren(['username', 'email', 'age']) && \
newData.child('username').isString() && \
newData.child('username').val().length >= 3 && \
newData.child('email').isString() && \
newData.child('email').val().matches(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i) && \
newData.child('age').isNumber() && \
newData.child('age').val() >= 13"
}
}
}
}Test din viden
Se på en regel for en 'product'-node. Et produkt skal have et 'name' (tekststreng, mindst 2 tegn og højst 100 tegn) og en 'price' (tal, større end 0).
Opsummering: Dataintegriteten er sikret
Godt gået! Du har lært at bruge Firebase Realtime Database Security Rules til at validere data:
- Objektet
newDatarepræsenterer de data, der skrives. - Reglen
.validate()håndhæver betingelser fornewData. - Du kan kontrollere datatyper (
isString(),isNumber()). - Sørg for, at påkrævede felter findes, med
hasChildren(). - Validér tekstlængder (
.length) og talintervaller (>,<). - Brug
.matches()til kompleks mønstervalidering med regulære udtryk. - Kombinér regler med
&&og||for effektiv logik.
Ved at validere data sikrer du, at din database forbliver ren og sikker!
Lær Firebase-godkendelse og apps med realtidsdatabase med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 11
- Lektioner
- 44
Ofte stillede spørgsmål
Er lektionen “Validering af data med regler” gratis?
Ja — alle 3 lektioner i læringssporet Firebase-godkendelse og apps med realtidsdatabase, inklusive “Validering af data med regler”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Firebase-godkendelse og apps med realtidsdatabase-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Validering af data med regler”?
Brug sikkerhedsregler til at validere indgående data, så de følger de forventede formater og forhindrer skadelige skrivninger. Du øver dig i Firebase-godkendelse og apps med realtidsdatabase med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Firebase-godkendelse og apps med realtidsdatabase?
Der kræves ingen tidligere erfaring. Firebase-godkendelse og apps med realtidsdatabase på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Validering af data med regler”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Firebase-godkendelse og apps med realtidsdatabase-lektion?
Ja. Alle Firebase-godkendelse og apps med realtidsdatabase-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Forstå syntaksen for sikkerhedsregler
- Brugerbaseret adgangskontrol
- Validering af data med regler
- Test og fejlfinding af sikkerhedsregler