Offline & konflik
Aplikasi yang membaca/menulis data lokal lalu menyinkronkan ke server akan berhadapan dengan jaringan putus-nyambung, duplikasi, dan versi data yang saling bertentangan.
Strategi offline-first
- Queue tulisan — tandai perubahan sebagai “pending”, kirim saat online; tampilkan status ke pengguna.
- Stamp waktu / versi — server dan klien menyetujui aturan “menang” (last-write-wins, atau merge field-per-field).
- Idempotensi — request ulang tidak boleh menggandakan data di server.
NexaDB & Firebase di template
Dokumentasi ringkas Firebase: halaman Firebase.
Contoh kode NexaDB, integrasi API, dan Firebase ada di folder exsampel/:
NexaDBLiteExample.js, NexaDbExample.js, NexaDBJsonExample.js,
NexaDbFirebaseExample.js, serta ApiBackendExample.js untuk pola panggilan backend.
Menangani konflik
- Deteksi konflik saat
syncmengembalikan error atau versi tidak cocok. - Berikan opsi: pakai versi server, pakai versi lokal, atau gabungkan manual (untuk data kompleks).
- Log peristiwa sync untuk debugging di lapangan.
const queue = [];
async function saveWithQueue(payload) {
try {
await api.post("/items", payload);
} catch {
queue.push({ type: "create", payload, at: Date.now() });
}
}
async function flushQueue() {
while (queue.length) {
const job = queue[0];
await api.post("/items", job.payload);
queue.shift();
}
}