Gegevens valideren met regels
Gebruik beveiligingsregels om binnenkomende gegevens te valideren, zodat ze aan de verwachte indeling voldoen en schadelijke schrijfbewerkingen worden voorkomen
Gegevens valideren met regels is een gratis Apps met Firebase-authenticatie en realtime database-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Apps met Firebase-authenticatie en realtime database. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Apps met Firebase-authenticatie en realtime database bevat in totaal 4 lessen.
Waarom gegevens valideren?
Welkom bij les 3! In deze les leer je hoe je Firebase Realtime Database Security Rules gebruikt om binnenkomende gegevens te valideren. Dit is erg belangrijk om:
- te voorkomen dat onjuiste of schadelijke gegevens in je database terechtkomen;
- de integriteit en consistentie van de gegevens van je toepassing te behouden;
- ervoor te zorgen dat gegevens voldoen aan de verwachte indelingen en typen.
Zie het als een portier voor je database!
Kennismaken met newData en .validate()
Wanneer gegevens naar je database worden geschreven, biedt Firebase een speciaal object met de naam newData. Dit object vertegenwoordigt de gegevens die op het punt staan te worden geschreven.
We gebruiken de regel .validate() om voorwaarden te definiëren waaraan newData moet voldoen. Als niet aan deze voorwaarden wordt voldaan, wordt de schrijfbewerking geweigerd.
Hier is een eenvoudig voorbeeld:
{
"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'])"
}
}
}
}Gegevenstypen controleren
Een van de meest voorkomende validaties is het controleren van het gegevenstype. Je kunt afdwingen dat velden tekenreeksen, getallen, booleans of zelfs null zijn.
Zo voorkom je bijvoorbeeld dat gebruikers een getal insturen op een plek waar een naam (tekenreeks) wordt verwacht.
{
"rules": {
"users": {
"$userId": {
"name": { ".validate": "newData.isString()" },
"age": { ".validate": "newData.isNumber()" },
"isActive": { ".validate": "newData.isBoolean()" }
}
}
}
}Velden verplicht maken
Soms zijn bepaalde velden absoluut vereist. Je kunt newData.hasChildren(['field1', 'field2']) gebruiken om ervoor te zorgen dat meerdere velden bestaan, of rechtstreeks toegang krijgen tot een onderliggend veld om te controleren of het aanwezig is.
Als een verplicht veld ontbreekt, mislukt de schrijfbewerking.
{
"rules": {
"messages": {
"$messageId": {
".validate": "newData.hasChildren(['senderId', 'text'])"
}
}
}
}Lengtes van tekenreeksen beheren
Voor tekstvelden wil je vaak de minimale of maximale lengte beperken. Zo voorkom je dat invoer te kort of extreem lang is.
Je kunt de eigenschap .length gebruiken voor een tekenreekswaarde.
{
"rules": {
"products": {
"$productId": {
"name": {
".validate": "newData.isString() && newData.val().length > 2 && newData.val().length < 50"
}
}
}
}
}Getalbereiken instellen
Voor numerieke gegevens moet je soms controleren of waarden binnen een bepaald bereik vallen. Een leeftijd moet bijvoorbeeld positief zijn en een score moet tussen 0 en 100 liggen.
Je kunt de standaardvergelijkingsoperatoren gebruiken (>, <, >=, <=).
{
"rules": {
"scores": {
"$scoreId": {
"value": {
".validate": "newData.isNumber() && newData.val() >= 0 && newData.val() <= 100"
}
}
}
}
}Geavanceerd patroon zoeken
Voor complexere indelingen van tekenreeksen, zoals e-mailadressen of URL's, kun je reguliere expressies gebruiken met de functie .matches().
Reguliere expressies zijn krachtige patronen om tekst te vergelijken. In het begin kunnen ze intimiderend lijken, maar ze zijn erg nuttig!
{
"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)"
}
}
}
}
}Validatieregels combineren
Vaak moet je meerdere validatiecontroles combineren. Je kunt logische operatoren gebruiken:
&&(EN): alle voorwaarden moeten waar zijn.||(OF): minstens één voorwaarde moet waar zijn.
Zo kun je zeer flexibele en robuuste validatielogica maken.
{
"rules": {
"tasks": {
"$taskId": {
".validate": "newData.hasChildren(['title', 'status']) && newData.child('title').isString() && newData.child('title').val().length > 5"
}
}
}
}Voorbeeld van validatie van een gebruikersprofiel
Laten we alles samenbrengen met een uitgebreid voorbeeld voor een gebruikersprofiel:
username: moet een tekenreeks zijn van minimaal 3 tekens.email: moet een tekenreeks zijn en overeenkomen met een reguliere expressie voor e-mailadressen.age: moet een getal zijn van minimaal 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 je kennis
Bekijk een regel voor een knooppunt 'product'. Een product moet een 'name' hebben (tekenreeks, minimaal 2 tekens en maximaal 100 tekens) en een 'price' (getal groter dan 0).
Herhaling: gegevensintegriteit gewaarborgd
Goed gedaan! Je hebt geleerd hoe je Firebase Realtime Database Security Rules gebruikt om gegevens te valideren:
- Het object
newDatavertegenwoordigt de gegevens die worden geschreven. - De regel
.validate()dwingt voorwaarden af voornewData. - Je kunt gegevenstypen controleren (
isString(),isNumber()). - Je kunt controleren of verplichte velden bestaan met
hasChildren(). - Je kunt tekenreekslengtes (
.length) en getalbereiken (>,<) valideren. - Gebruik
.matches()voor complexe patroonvalidatie met reguliere expressies. - Combineer regels met
&&en||voor krachtige logica.
Door gegevens te valideren zorg je ervoor dat je database schoon en veilig blijft!
Leer Apps met Firebase-authenticatie en realtime database met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 11
- Lessen
- 44
Veelgestelde vragen
Is de les “Gegevens valideren met regels” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Apps met Firebase-authenticatie en realtime database, waaronder “Gegevens valideren met regels”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Apps met Firebase-authenticatie en realtime database bevat in totaal 4 lessen.
Wat leer ik in “Gegevens valideren met regels”?
Gebruik beveiligingsregels om binnenkomende gegevens te valideren, zodat ze aan de verwachte indeling voldoen en schadelijke schrijfbewerkingen worden voorkomen Je oefent met Apps met Firebase-authenticatie en realtime database door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Apps met Firebase-authenticatie en realtime database te beginnen?
Ervaring vooraf is niet nodig. Apps met Firebase-authenticatie en realtime database op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Gegevens valideren met regels”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Apps met Firebase-authenticatie en realtime database?
Ja. Elke les over Apps met Firebase-authenticatie en realtime database bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- De syntaxis van beveiligingsregels begrijpen
- Toegangsbeheer op basis van gebruikers
- Gegevens valideren met regels
- Security rules testen en debuggen