Anda dapat menyelesaikan ini tanpa database, tetapi saya tidak akan merekomendasikannya. Pada dasarnya Anda memiliki (pengguna, localStorage) pasangan dan ketika pengguna yang diberikan mengidentifikasi dirinya sendiri, / localStorage nya harus disediakan dengan cara. Anda dapat memberi tahu pengguna untuk menyimpan penyimpanan lokal mereka di mesin mereka sendiri, tetapi kemudian mereka harus menyalinnya ke mesin lain, yang padat karya dan tidak akan pernah mendapatkan popularitas. Seseorang dapat secara manual menjalankan potongan Javascript di konsol browser mereka untuk memastikan bahwa localStorage memiliki data mereka dan harus menyalin mesin localStorage accross hanya sedikit lebih mudah daripada melakukan semuanya secara manual.
Anda dapat menempatkan informasi localStorage disandikan ke dalam URL, tetapi selain masalah panjang URL, yang mungkin menjadi masalah dan masalah penyandian yang selalu ada, seluruh localStorage Anda dapat dipantau oleh pihak ketiga, memiliki akses ke router Anda. Saya tahu Anda telah mengatakan bahwa data tidak sensitif, tapi saya percaya bahwa itu tidak peka belum . Tetapi begitu pengguna akan menggunakan ini, jika nyaman, mereka akan menyimpan data sensitif juga atau, klien Anda mungkin memiliki tugas seperti itu untuk Anda, atau bahkan Anda mungkin menyadari bahwa Anda perlu menyimpan data di sana yang tidak 100% bersifat publik.
Selain itu, dalam praktiknya Anda akan menghadapi masalah sinkronisasi yang sangat serius, yaitu, semuanya menyenangkan untuk menjadikan localStorage agnostik, tetapi kemudian, apa versi sebenarnya? Jika Anda secara teratur mengerjakan 10 sesi yang berbeda, maka menyinkronkan penyimpanan lokal menjadi masalah yang sulit. Ini berarti bahwa penyimpanan lokal perlu cap waktu.
Jadi, Anda akan membutuhkan tempat pusat, server untuk menyimpan versi localStorage yang terakhir disimpan. Jika Anda terhindar dari basis data karena beberapa alasan yang tidak diketahui, Anda dapat menyimpan penyimpanan lokal di dalam file yang mengidentifikasi pengguna, seperti
johndoe.json
dan kemudian, Anda perlu mengimplementasikan fitur ekspor, yang akan mengirim JSON pengguna saat ini ke server dan menyimpannya ke dalam file dan fitur impor, yang akan mengunduh file yang disimpan untuk pengguna dan memastikan bahwa penyimpanan lokal diperbarui demikian. Anda dapat melakukan keduanya bersama-sama, menerapkan sinkronisasi.
Sejauh ini masih sederhana, tetapi bagaimana jika pengguna sudah memiliki beberapa data yang berguna di dalam penyimpanan lokal dan di server juga? Pendekatan paling sederhana adalah menimpa satu dengan yang lain, tetapi yang mana? Jika kita mengimpor, maka yang lokal diganti, jika mengekspor, maka yang di server ditimpa, jika kita menyinkronkan, maka yang lebih tua ditimpa.
Namun, dalam beberapa kasus Anda ingin menggabungkan dua penyimpanan lokal dari pengguna yang sama, jadi:
elemen baru
Saya percaya bahwa jika suatu elemen baru, harus diketahui dengan cara tertentu bahwa elemen itu dibuat dalam sesi ini, yang berguna untuk diketahui, karena itu berarti bahwa pada sesi lain yang kami gabungkan, item baru ini tidak dihapus. dan karenanya intuitif untuk menambahkannya.
perubahan elemen
Jika elemen yang sama berbeda dalam dua kasus, maka versi yang lebih baru akan menang.
elemen yang dihapus
Kasus yang menarik adalah ketika dalam satu sesi telah dihapus dan yang lain telah diperbarui. Dalam hal ini saya pikir perubahan yang lebih baru harus menang.
Namun, terlepas dari upaya terbaik Anda, pengguna mungkin masih mengacaukan (dan perangkat lunak Anda juga) hal-hal, jadi membuat cadangan setiap sesi di server Anda masuk akal.