Gezamenlijke gegevensbewerking
Implementeer functies waarmee meerdere gebruikers gedeelde gegevens realtime kunnen bewerken en bekijken, met gebruik van de synchronisatie van Firebase
Gezamenlijke gegevensbewerking 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.
Wat is gezamenlijk bewerken?
Stel je voor dat meerdere mensen tegelijkertijd aan hetzelfde document of dezelfde gedeelde lijst werken. Dat is gezamenlijk bewerken!
- Gebruikers zien elkaars wijzigingen direct.
- Niemand overschrijft per ongeluk het werk van iemand anders.
- Iedereen beschikt over de meest actuele informatie.
Firebase Realtime Database is hier perfect voor, omdat deze is ontwikkeld voor snelheid en realtime synchronisatie.
Het realtimevoordeel van Firebase
De belangrijkste kracht van Firebase Realtime Database is de mogelijkheid om gegevens binnen milliseconden tussen alle verbonden clients te synchroniseren. Dit is essentieel voor functies voor gezamenlijk gebruik.
- Directe updates: Wijzigingen van één gebruiker worden onmiddellijk naar anderen doorgestuurd.
- Ondersteuning voor offlinegebruik: Gegevens kunnen offline worden bewerkt en worden gesynchroniseerd zodra de verbinding is hersteld.
- Schaalbaar: Kan veel gelijktijdige gebruikers verwerken zonder ingewikkelde backendlogica.
Hierdoor wordt het veel eenvoudiger om chatapps, gedeelde takenlijsten of gezamenlijk bewerkbare whiteboards te bouwen.
Gegevens structureren voor samenwerking
Voor gedeelde gegevens structureer je deze vaak onder een gemeenschappelijk bovenliggend knooppunt. Bijvoorbeeld een chatruimte of een document:
/chatRooms/room123/messages//documents/docABC/content//sharedTasks/taskXYZ/assignees/
Elke gebruiker die met deze gegevens werkt, luistert naar updates op deze paden. Beveiligingsregels zijn hierbij cruciaal om te bepalen wie gegevens mag lezen en schrijven.
Luisteren naar realtime-updates
Clients abonneren zich op gegevenspaden en ontvangen automatisch updates. Hier is een conceptueel fragment (JavaScript-achtig) dat laat zien hoe een client naar wijzigingen in een gedeelde teller kan luisteren:
const db = firebase.database();
const counterRef = db.ref('sharedCounter');
counterRef.on('value', (snapshot) => {
const currentCount = snapshot.val();
console.log('Current count:', currentCount);
});Elke wijziging in /sharedCounter door een client activeert deze listener onmiddellijk.
const db = firebase.database();
const counterRef = db.ref('sharedCounter');
counterRef.on('value', (snapshot) => {
const currentCount = snapshot.val();
console.log('Current count:', currentCount);
});De uitdaging: gelijktijdige schrijfbewerkingen
Wat gebeurt er als twee gebruikers exact op hetzelfde moment proberen hetzelfde gegeven bij te werken? Dit heet een raceconditie.
Stel je een gedeelde teller voor. Gebruiker A leest 10, telt 1 op en schrijft 11. Op *hetzelfde moment* leest gebruiker B 10, telt 1 op en schrijft 11. De teller zou 12 moeten zijn, maar eindigt op 11 omdat de ene update de andere overschrijft.
Een raceconditie simuleren
Deze Java-code simuleert twee threads die een gedeelde teller proberen te verhogen zonder goede synchronisatie. Voer de code meerdere keren uit en bekijk de eindwaarde – die is niet altijd 2000!
public class Main {
private static int counter = 0;
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
counter++;
}
});
Thread t2 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
counter++;
}
});
t1.start();
t2.start();
t1.join();
t2.join();
System.out.println("Final Counter: " + counter);
}
}Oplossen met Firebase-transacties
Firebase Realtime Database biedt transacties om deze racecondities te voorkomen. Een transactie zorgt ervoor dat een updatebewerking atomair is: deze wordt volledig uitgevoerd of mislukt, en andere schrijfbewerkingen kunnen niet halverwege ingrijpen.
Dit werkt als volgt:
- De huidige gegevens lezen.
- Je wijzigingen op deze gegevens toepassen.
- De nieuwe gegevens terugschrijven, maar ALLEEN als de oorspronkelijke gegevens sinds het lezen niet zijn veranderd.
Als de gegevens zijn veranderd, probeert de transactie het opnieuw.
Een transactie implementeren
Hier is een conceptuele transactie om een gedeelde teller veilig te verhogen (JavaScript-achtig). De methode runTransaction accepteert een updatefunctie.
const db = firebase.database();
const counterRef = db.ref('sharedCounter');
counterRef.transaction((currentData) => {
// If data doesn't exist, start at 0
if (currentData === null) {
return 1;
}
// Increment the existing value
return currentData + 1;
}).then((result) => {
if (result.committed) {
console.log('Counter incremented successfully!');
} else {
console.log('Transaction aborted or failed.');
}
}).catch((error) => {
console.error('Transaction error:', error);
});Dit garandeert dat de teller correct wordt verhoogd, zelfs wanneer veel gebruikers tegelijkertijd actief zijn.
const db = firebase.database();
const counterRef = db.ref('sharedCounter');
counterRef.transaction((currentData) => {
// If data doesn't exist, start at 0
if (currentData === null) {
return 1;
}
// Increment the existing value
return currentData + 1;
}).then((result) => {
if (result.committed) {
console.log('Counter incremented successfully!');
} else {
console.log('Transaction aborted or failed.');
}
}).catch((error) => {
console.error('Transaction error:', error);
});Transactielogica uitgelegd
De kern van een transactie is de updatefunctie: (currentData) => { ... }.
currentData: Dit is de waarde van de gegevens op de server op het moment waarop de transactie probeert te worden vastgelegd.- Retourwaarde: Wat je functie retourneert, is de nieuwe waarde die Firebase probeert te schrijven.
undefinedofnullretourneren: Als jeundefinedofnullretourneert, wordt de transactie afgebroken en worden er geen wijzigingen geschreven.
Firebase verwerkt de logica voor nieuwe pogingen als currentData verandert tussen het lezen en de poging om de transactie vast te leggen.
Korte controle over transacties
Je bouwt een app voor gezamenlijk tekenen. Gebruikers kunnen een nieuwe lijn aan een gedeeld canvas toevoegen. Welke Firebase-functie is het belangrijkst om ervoor te zorgen dat twee gebruikers die exact tegelijkertijd tekenen elkaars wijzigingen in de lijst met lijnen niet overschrijven?
Samenvatting: gezamenlijk bewerken
In deze les hebben we verkend hoe Firebase Realtime Database toepassingen voor gezamenlijk bewerken mogelijk maakt. We hebben geleerd:
- De realtime synchronisatie van Firebase is ideaal voor gedeelde ervaringen.
- Een juiste gegevensstructuur is essentieel voor gedeelde toegang.
- Bij gelijktijdige schrijfbewerkingen kunnen racecondities optreden.
- Firebase Transactions zijn de oplossing om gedeelde gegevens veilig bij te werken, waarbij de integriteit ook bij veel gebruikers behouden blijft.
Met transacties kun je robuuste functies voor gezamenlijk werken bouwen, waarmee gebruikers naadloos samenwerken.
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 “Gezamenlijke gegevensbewerking” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Apps met Firebase-authenticatie en realtime database, waaronder “Gezamenlijke gegevensbewerking”, 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 “Gezamenlijke gegevensbewerking”?
Implementeer functies waarmee meerdere gebruikers gedeelde gegevens realtime kunnen bewerken en bekijken, met gebruik van de synchronisatie van Firebase 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 “Gezamenlijke gegevensbewerking”?
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
- Gebruikersgegevens koppelen aan Auth
- Realtimegebruikersprofielen
- Gezamenlijke gegevensbewerking
- Rolgebaseerde toegang tot gebruikersgegevens