Bunu bir veritabanı olmadan çözebilirsiniz, ancak ben tavsiye etmem. Temel olarak (kullanıcı, localStorage) çiftleriniz vardır ve belirli bir kullanıcı kendini tanımladığında, localStorage bir şekilde sağlanmalıdır. Kullanıcılara yerel depolarını kendi makinelerinde saklamalarını söyleyebilirsiniz, ancak daha sonra emek yoğun olan ve asla popülerlik kazanmayacak olan diğer makinelere kopyalamaları gerekecektir. Bir, localStorage'ın verilerinin bulunduğundan ve localStorage'ın makinelere kopyalamak zorunda kaldığından emin olmak için her şeyi manuel olarak yapmaktan biraz daha kolay olduğundan emin olmak için tarayıcılarının konsolunda bir Javascript yığınını manuel olarak çalıştırabiliriz.
Bir URL'ye kodlanmış localStorage bilgilerini koyabilirsiniz, ancak bir sorun haline gelebilecek URL uzunluğu sorununun ve mevcut kodlama sorunlarının yanı sıra, tüm localStorage'ınız yönlendiricinize erişimi olan bir üçüncü taraf tarafından izlenebilir. Sana verilerinin duyarlı olmadığını söyledi biliyorum, ama duyarlı olmadığını inanıyorum henüz . Ancak kullanıcılar bunu kullandığında, uygunsa, hassas verileri de depolayacaklar veya müşterileriniz sizin için bu tür görevlere sahip olabilir veya hatta% 100 herkese açık olmayan verileri depolamanız gerektiğini fark edebilirsiniz.
Bunların yanı sıra, pratikte çok ciddi senkronizasyon sorunları ile karşılaşacaksınız, yani, localStorage'ı agnostik yapmak güzel, ama o zaman gerçek sürüm nedir? Düzenli olarak 10 farklı oturumda çalışıyorsanız, localStorages'ı senkronize etmek zor bir sorun haline gelir. Bu, localStorage'ın zaman damgalı olması gerektiği anlamına gelir.
Bu nedenle, son kaydedilen localStorage sürümünü saklamak için merkezi bir yere, bir sunucuya ihtiyacınız olacak. Bazı bilinmeyen nedenlerden dolayı veritabanları tarafından engellenirseniz, localStorages'ı kullanıcıyı tanımlayan dosyaların içinde saklayabilirsiniz.
johndoe.json
ve sonra kullanıcının geçerli JSON'unu sunucuya gönderecek ve bir dosyaya ve bir içe aktarma özelliğine kaydedecek, kullanıcı için depolanan dosyayı indirecek ve localStorage'ın güncellenmesini sağlayacak bir dışa aktarma özelliği uygulamanız gerekir. buna göre. İkisini de bir araya getirerek bir senkronizasyon gerçekleştirebilirsiniz.
Bu şimdiye kadar basit, ancak kullanıcının yerel localStorage içinde ve sunucuda da bazı yararlı verileri varsa? En basit yaklaşım birini diğeri ile geçersiz kılmaktır, ama hangisi? İçe aktarıyorsak, o zaman yerel olan geçersiz kılınır, dışa aktarılırsa, sunucudaki olan geçersiz kılınır, senkronize edilirsek, eski olan geçersiz kılınır.
Ancak, bazı durumlarda aynı kullanıcının iki localStation'unu birleştirmek istersiniz, bu nedenle:
yeni elemanlar
Bir eleman yeni ise, bu oturumda yaratıldığı bir şekilde bilinmesi gerektiğine inanıyorum, bu da yararlıdır, çünkü bu, bir araya geldiğimiz diğer oturumda bu yeni öğenin kaldırılmadığı anlamına gelir ve bu yüzden eklemek sezgiseldir.
eleman değişiklikleri
İki durumda aynı eleman farklıysa, daha yeni sürüm geçerli olmalıdır.
kaldırılan elemanlar
İlginç durum, bir oturumda kaldırıldığı ve diğer oturumda güncelleştirildiği zamandır. Bu durumda yeni değişikliklerin geçerli olması gerektiğini düşünüyorum.
Bununla birlikte, en iyi çabalarınıza rağmen, kullanıcılar yine de işleri (ve yazılımınızı da) karıştırıyor olabilir, bu nedenle sunucunuzdaki her oturumu yedeklemek mantıklıdır.