उपकरणों के पार लोकलस्टोरेज का विस्तार कैसे करें (DB के बिना)


10

लक्ष्य:localStorage मेरे ऐप में पहले से लागू की गई, अच्छी तरह से, गैर स्थानीय मैं अनुमान लगाता हूं।


मुझे स्थानीय भंडारण एपीआई के साथ सरल उपयोगकर्ता सेटिंग्स को बचाने का कार्यान्वयन पसंद है। मेरे पास एक वेब ऐप में मेरी जरूरतों के लिए यह काम है, लेकिन एकमात्र समस्या यह है कि उस मशीन / ब्राउज़र का उपयोग / सहेजा जा रहा है। मेरे पास इसके लिए एक क्लासिक MySQL शैली तालिका तक पहुंच नहीं है। मैं अन्य ब्राउज़रों तक ले जाने के लिए अपने स्थानीय संग्रहण को विस्तारित या अनुकूलित करना चाहूंगा; या यूजर जेएस ऑब्जेक्ट्स और जेएस ऑब्जेक्ट प्रॉपर्टीज में मेरी यूजर सेटिंग्स स्टोर करें।

  • मुझे प्रत्येक उपयोगकर्ता के साथ केवल JSON या जावास्क्रिप्ट ऑब्जेक्ट बनाने का विचार पसंद है, जब भी कोई नया उपयोगकर्ता होता है, तो नाम लें, एक ऑब्जेक्ट बनाएं या object[key]नाम के साथ, और पहली बार में फ़ील्ड गुण डिफ़ॉल्ट चर हैं, और चर आबादी वाले और ओवरराइड जब उपयोगकर्ता उन्हें बचाता है।
  • या अगर ऊपर को फसाया जाता है; मेरे स्थानीय स्तर के कार्यान्वयन को बनाए रखना चाहते हैं क्योंकि यह इतनी अच्छी तरह से काम करता है और एक प्लगइन / पुस्तकालय / कुछ प्रकार का विस्तार पाता है जो मुझे इसे बचाने और विभिन्न स्थानों में फिर से प्रस्तुत करने की अनुमति देता है; यह पहले सोचा जा करने के लिए मिल गया है। हालाँकि मैं इसे ग्राहक पक्ष रखना पसंद करूंगा; मैं एक नोड.जेएस समाधान के साथ-साथ अजगर समाधान के लिए खुला हूं, एक साधारण डेटाफ़्रेम को पर्याप्त काम करना चाहिए।
  • मेरे localStorageडेटा के साथ फ़ाइल बनाने के बारे में क्या ? शायद एक .csv फ़ाइल (यह गैर संवेदनशील डेटा है) और क्या मेरे पास यह अपडेट localStorageहै?

2
आप केवल इस ग्राहक-पक्ष को नहीं कर सकते। ब्राउज़र में उपयोगकर्ता की जानकारी को बनाए रखने के लिए आपको एक सार्वजनिक सर्वर की आवश्यकता होती है और उस पर जानकारी संग्रहीत की जाती है। आमतौर पर यह एक डेटाबेस का उपयोग करके किया जाता है; यदि आप mySQL का उपयोग नहीं करना चाहते हैं तो अन्य प्रकार के डेटा संग्रहण हैं। फायरबैस आप जो कल्पना करते हैं, उसके बहुत करीब है, यह आपको मनमानी संरचना की वस्तुओं को संग्रहीत करने की अनुमति देता है। (यह भी, JSON एक टेक्स्ट फॉर्मेट है। JSON ऑब्जेक्ट जैसी कोई चीज नहीं है)
क्रिस जी

कुछ हद तक ऐसा ही है: stackoverflow.com/a/60279503/4845566 ?
डेबलाकर

जवाबों:


3

Sqlite का उपयोग करने के बारे में क्या?

सीएसवी की तरह अपने सर्वर पर सिर्फ एक फ़ाइल। Http अनुरोध भेजना SQL कथन का उपयोग करके इसे knex या कुछ इस तरह से अपडेट करना कि क्लाइंट-साइड पर लोकलस्टोर अपडेट करने के बाद।

कम से कम यह मेरे विचार से cvs से बेहतर है क्योंकि आप कई तालिकाओं को परिभाषित कर सकते हैं, जो अधिक मापनीय है, और अधिक कुशल है, आप जानते हैं, यह एक डेटाबेस है।


2

मैं यहां अपने दो सेंट जोड़ रहा हूं।


निर्यात / आयात फ़ाइल (JSON, XML, CSV, TSV, आदि)

निर्यात:

सेटिंग्स को सीरीज़ करें और इसे फ़ाइल के रूप में डाउनलोड करें।

आयात:

निर्यात / डाउनलोड क्रमबद्ध सेटिंग्स फ़ाइल खोलें।

उदाहरण कोड:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Settings Export/Import Demo</title>
</head>

<body>
    <div id="display"></div> <br>
    <button onclick="exportSettings();">Export</button>

    <button onclick="resetSettings();">Reset</button> <br><br>
    File to import: <input id="file-input" type="file" accept="application/json"> <br>
    <button onclick="importSettings();">Import</button>
    <script>

        function exportSettings() {
            var json = getSettingsAsJSON();
            var blob = new Blob([json], { type: "application/json" });
            var linkElement = document.createElement("a");

            linkElement.href = URL.createObjectURL(blob);
            linkElement.download = "ThisIsMySettings";

            document.body.appendChild(linkElement);

            linkElement.click();

            document.body.removeChild(linkElement);
        }

        function importSettings() {
            var fileInput = document.getElementById("file-input");

            if (fileInput.files.length > 0) {
                var jsonFile = fileInput.files[0];

                var fileReader = new FileReader();

                fileReader.onload = function (e) {
                    var json = e.target.result;

                    try {
                        var settings = JSON.parse(json);

                        if (settings.hasOwnProperty("userId")) {
                            localStorage["myapp_user_id"] = settings.userId;
                        }

                        if (settings.hasOwnProperty("hello")) {
                            localStorage["myapp_hello"] = settings.hello;
                        }

                        if (settings.hasOwnProperty("data")) {
                            localStorage["myapp_data"] = settings.data;
                        }

                        displaySettings();
                    } catch (ex) {
                        console.error(ex);

                        alert("Error occured while importing settings!");
                    }
                };

                fileReader.readAsText(jsonFile);
            }
        }

        function resetSettings() {
            localStorage["myapp_user_id"] = Math.floor(Math.random() * 100000) + 1;
            localStorage["myapp_hello"] = "Hello World!";
            localStorage["myapp_data"] = JSON.stringify([1, 3, 3, 7]);

            displaySettings();
        }

        function displaySettings() {
            var json = getSettingsAsJSON();

            document.getElementById("display").innerText = json;
        }

        function getSettingsAsJSON() {
            return JSON.stringify({
                userId: localStorage["myapp_user_id"],
                hello: localStorage["myapp_hello"],
                data: localStorage["myapp_data"]
            });
        }

        resetSettings();
    </script>
</body>

</html>

URL (क्वेरी स्ट्रिंग)

निर्यात:

क्वेरी स्ट्रिंग में सेटिंग्स एनकोड करें, और हाइपरलिंक के रूप में वर्तमान URL के साथ संयोजन करें।

आयात:

हाइपरलिंक पर जाएं जिसमें एन्कोडेड सेटिंग्स के साथ क्वेरी स्ट्रिंग है, फिर जावास्क्रिप्ट का पता लगाएं और क्वेरी स्ट्रिंग से सेटिंग्स लोड करें।


बेस 64 एनकोडेड डेटा

निर्यात:

फिर सेटिंग्स को सीरियलाइज़ करें और इसे बेस 64 स्ट्रिंग के रूप में एनकोड करें और फिर क्लिपबोर्ड पर कॉपी करें।

आयात:

बेसबोर्ड को क्लिपबोर्ड से टेक्स्टबॉक्स में डिकोड करने, डीस्सराइज़ करने और लोड करने की सेटिंग के लिए पेस्ट करें।


क्यूआर कोड

निर्यात:

क्वेरी स्ट्रिंग में सेटिंग्स एनकोड करें, और हाइपरलिंक के रूप में वर्तमान URL के साथ संयोजन करें। फिर एक क्यूआर कोड छवि और प्रदर्शन उत्पन्न करें।

आयात:

उत्पन्न क्यूआर कोड छवि को स्कैन करें और हाइपरलिंक को स्वचालित रूप से देखें।


HTTP सर्वर (Node.js) / क्लाउड स्टोरेज (AWS S3)

निर्यात:

उपयोगकर्ता आईडी द्वारा मानों को अपडेट करते समय HTTP POST को स्वचालित रूप से समापन के लिए।

आयात:

उपयोगकर्ता आईडी द्वारा समापन बिंदु से HTTP जीईटी।


अतिरिक्त: PouchDB

डेटाबेस कि सिंक करता है!

PouchDB Apache CouchDB से प्रेरित एक ओपन-सोर्स जावास्क्रिप्ट डेटाबेस है जो ब्राउज़र के भीतर अच्छी तरह से चलाने के लिए डिज़ाइन किया गया है।

PouchDB वेब डेवलपर्स को ऐसे एप्लिकेशन बनाने में मदद करने के लिए बनाया गया था जो ऑनलाइन के साथ-साथ ऑफ़लाइन भी काम करते हैं। यह एप्लिकेशन को ऑफ़लाइन रहते हुए डेटा को संग्रहीत करने में सक्षम बनाता है, फिर एप्लिकेशन ऑनलाइन वापस होने पर इसे CouchDB और संगत सर्वर के साथ सिंक्रनाइज़ करें, उपयोगकर्ता के डेटा को सिंक में रखते हुए कोई फर्क नहीं पड़ता कि वे अगले लॉगिन में कहां हैं।


जवाब देने के लिए धन्यवाद। सबसे अच्छा अभी तक; पहले आयात / निर्यात के साथ - मैं इसे बना सकता था ताकि उपयोगकर्ता केवल लोड करने के लिए सेटिंग्स के लिए फ़ाइल खोल सके? वह काम कैसे कर सकता है?
डाक अवकाश

1
JSON फ़ाइल निर्यात / आयात के लिए उदाहरण कोड जोड़ा गया।
डीके ढिलिप

ओह समझा। धन्यवाद। मुझे लगता है कि उपयोगकर्ता से पूछने के लिए थोड़ा बहुत है। अगर वहाँ एक तरीका है कि मैं एक हाइपरलिंक उत्पन्न कर सकते हैं और यह शायद उन्हें ईमेल था। मुझे लगता है कि मेरे डेटा में URL क्वेरी स्ट्रिंग में डालने के लिए बहुत सारे वर्ण हैं। QR कोड विकल्प को कैसे स्कैन किया जाएगा?
डॉक्टर अवकाश

यदि आपका डेटा क्वेरी स्ट्रिंग में फिट होने के लिए बहुत बड़ा है, तो शायद आप gzip / deflate plus Base64 के साथ प्रयोग कर सकते हैं यह देखने के लिए कि क्या यह पेलोड के आकार को कम कर सकता है और क्वेरी स्ट्रिंग में शामिल कर सकता है? मुझे नहीं पता कि यह आपके मामले के लिए पर्याप्त काम करेगा, बस एक यादृच्छिक विचार। क्यूआर कोड विकल्प के लिए, इसे कैमरे के साथ किसी भी उपकरण द्वारा स्कैन किया जा सकता है, या छवि फ़ाइल को सीधे स्कैन कर सकते हैं (साधारण URL, डेटा URL, खुली फ़ाइल से)।
डीके ढिलिप

डेटा आकार में कमी के विचार का विस्तार करने के लिए, आप अपने डेटा को ArrayBuffer में मैन्युअल रूप से अनुक्रमित करने का प्रयास कर सकते हैं ताकि इसे जितना संभव हो उतना छोटा बनाया जा सके और फिर परिवहन विधि के आधार पर इसके लिए Base64 एन्कोडिंग लागू करें।
डीके ढिलिप

2

यदि आप अपने उपयोगकर्ता पैरेम्स को ज़िप करते हैं तो आप URL को स्टोरेज के रूप में उपयोग कर सकते हैं।
आप जिन पार्म्स को स्टोर करना चाहते हैं> json> डिफलेट> बेस 64 पर एनकोड करें> URL में पुश करें

const urlParam = btoa(pako.deflate(JSON.stringify(getUser()), { to: 'string' }));

onload: url से params प्राप्त करें> base64 से डिकोड करें> फुलाएँ> parse json

const user = JSON.parse(pako.inflate(atob(urlParam), { to: 'string' }));

https://jsfiddle.net/chukanov/q4heL8gu/44/

Url param बहुत लंबा होगा, लेकिन 10 गुना कम तो अधिकतम उपलब्ध होगा


इस! हालाँकि जब मैं अपने स्थानीयस्टोर डेटा को सांत्वना देता हूं तो यह ~ 20k और ~ 8k अक्षरों में होता है। क्या मैं अब भी ऐसा कुछ कर सकता हूं?
डाक अवकाश

1
मैंने 160k वर्णों के साथ परीक्षण किया है। यह अपस्फीति के बाद 1600 अक्षर होगा, यहां तक ​​कि IE समस्याओं के बिना भी काम करेगा (अर्थात - 2048 के लिए अधिकतम यूआरएल लंबाई)। आधुनिक ब्राउज़रों की url लंबाई के लिए कोई सीमा नहीं है।
एंटोन चुक्कनोव

धन्यवाद! क्या पको को लाइब्रेरी या कुछ और चाहिए होता है? मैं पाको अपरिभाषित हो रहा हूँ
अवकाश

1
"आधुनिक ब्राउज़रों URL लंबाई के लिए कोई सीमा नहीं है" एक झूठी धारणा है, का संदर्भ लें इस । इसके अलावा, पाको एक जावास्क्रिप्ट पुस्तकालय है जो यहां पाया जा सकता है ( GitHub , cdnjs )। अंत में, कृपया यह भी ध्यान दें कि डेटा सामग्री के आधार पर संपीड़न अनुपात भिन्न हो सकता है।
डीके ढिलिप

2

स्थानीयस्टोरेज का उपयोग करने के बजाय, अपने उपयोगकर्ता की सेटिंग को इंटरप्लैनेटरी फाइल सिस्टम (IPFS) https://ipfs.io/ में संग्रहीत करें

असल में, आप उनकी सेटिंग को JSON की तरह एक डेटा फॉर्मेट करेंगे और फिर इसे फाइल करने के लिए लिखेंगे और इसे IPFS में धकेल देंगे।

आपको यह पहचानने की आवश्यकता होगी कि कौन सा डेटा किस उपयोगकर्ता के पास जाता है। हो सकता है कि आप अपनी फ़ाइलों या इस तरह का नाम रखने के लिए उपयोगकर्ता नाम और पासवर्ड का एक हैश का उपयोग कर सकते हैं। तब आपका उपयोगकर्ता हमेशा किसी भी डिवाइस पर अपनी सामग्री तक पहुंचने में सक्षम होगा (जब तक कि वह अपना पासवर्ड भूल नहीं गया)।


1

आप एक पुस्तकालय का उपयोग कर सकते हैं जिसे localForageमूल रूप से एक ही एपीआई है क्योंकि localStorageयह आपको अधिक जटिल डेटा संरचनाओं (सरणियों, वस्तुओं) को स्टोर करने की अनुमति देता है और nodejsस्टाइल कॉलबैक, वादों का भी समर्थन करता है।async await

यहां रिपॉजिटरी का एक लिंक दिया गया है, जहां आप उदाहरण के लिए उपयोग कर सकते हैं और अपनी परियोजना में इसे कैसे लागू कर सकते हैं, जैसा आप चाहते हैं।


धन्यवाद जो साफ दिखता है; लेकिन ऐसा लगता है कि सामान्य DBStorage के रूप में DB के लिए इसकी सीमाएँ समान हैं
doc अवकाश

1

डेटा साझा करने के लिए डेटाबेस का उपयोग किए बिना इसे लागू करने का सबसे अच्छा तरीका, मेरा मानना ​​है कि यह WebRTC समाधान आधारित है, मैंने इसे ऐसा करने के तरीके के रूप में सोचा था, लेकिन मेरे पास इसके लिए कोड नहीं है (कम से कम अभी के लिए), इसलिए कुछ खोज मैंने पाया कोई पहले से ही यह किया (वास्तव में नहीं है, लेकिन कुछ तोड़ मरोड़ के साथ तैयार हो जाएगा) यहाँ उदाहरण के लिए, और इस अनुच्छेद के अपने हिस्से एक संकेत सर्वर के बिना WebRTC

यहां एक और स्रोत है: डेटा चैनल मूल उदाहरण डेमो

और जीथब पर: डेटा चैनल मूल उदाहरण

WebRTC न केवल वीडियो / ऑडियो चैट के लिए है, इसका उपयोग टेक्स्ट मैसेजिंग और टेक्स्ट एडिटिंग में सहयोग के लिए भी किया जा सकता है।

इस समाधान का भी यहाँ एक उत्तर में उल्लेख किया गया है


0

कुकीज़ का उपयोग करें या एक डाउनलोड करने योग्य फ़ाइल है जिसे उपयोगकर्ता किसी अन्य ब्राउज़र तक पहुंचने पर लोड करने के लिए अपने साथ ले जा सकते हैं। आप इसे ऑब्जेक्ट डेटा के साथ एक टेक्स्ट, JSON, या जावास्क्रिप्ट फ़ाइल के साथ कर सकते हैं।


मेरा मानना ​​है कि कुकीज़ केवल स्थानीय हैं?
डॉक्टर छुट्टी

यदि वे उसी "स्रोत" पर भरोसा करते हैं, तो कई वेबसाइटों द्वारा थर्ड पार्टी कुकीज़ का उपयोग किया जा सकता है।

0

आप रेडिस का उपयोग कर सकते हैं । यह एक इन-मेमोरी डेटा स्ट्रक्चर स्टोर है, जिसका इस्तेमाल डेटाबेस के रूप में किया जाता है। आप अपने डेटा को प्रमुख जोड़ी प्रारूपों में संग्रहीत कर सकते हैं। यह आपके एप्लिकेशन को तेज और कुशल भी बनाता है।


0

जाहिर है सबसे अच्छा तरीका एक डेटाबेस का उपयोग करना है। हालाँकि, यदि आप एक डेटाबेस का उपयोग करने के लिए इच्छुक हैं, तो एक संभव सबसे अच्छा तरीका तकनीकों का एक संयोजन का उपयोग करना है, जो मुझे लगता है कि आप पहले से ही स्पर्श कर चुके हैं इसलिए मैं यहां डॉट्स कनेक्ट करने में आपकी मदद करूंगा।

आवश्यक कदम:

  1. लोकलस्टोरेज एपीआई (चूंकि यह पहले से ही आपके लिए आंशिक रूप से काम कर रहा है)।
  2. GET और POST सेटिंग डेटा के लिए एंडपॉइंट के लिए एक नोड या पायथन (या आप किससे सहज हैं) का निर्माण करें।
  3. अपने API सर्वर पर एक userSettings.JSON फ़ाइल बनाएँ।

निर्देश:

आप अपने लोकलस्टोरेज का उसी तरह उपयोग करेंगे जैसे आप अभी (वर्तमान कार्यशील स्थिति) का उपयोग कर रहे हैं।

विभिन्न डिवाइसों में उपयोगकर्ता सेटिंग्स को स्थानांतरित करने या रखने के लिए, उपयोगकर्ता सेटिंग्स को स्टोर करने और आयात करने के लिए एक userSettings.JSON फ़ाइल (दस्तावेज़ डेटाबेस के रूप में सेवा) का उपयोग किया जाएगा।

यदि कोई भी लोकलस्टोरेज में मौजूद नहीं है, तो आपके एपीआई एंडपॉइंट का उपयोग उपयोगकर्ता सेटिंग्स प्राप्त करने के लिए किया जाएगा। सेटिंग्स के अपडेट पर, अपने स्थानीयस्टोर को अपडेट करें और फिर अपने एंडपॉइंट का उपयोग करके अपने यूज़रसेटिंग.जॉन फ़ाइल में नई सेटिंग्स को पोस्ट / अपडेट करें।

आपके एपीआई एंडपॉइंट का उपयोग केवल यूज़रसेटिंग.जॉन फ़ाइल को बनाए रखने (पढ़ने और लिखने) के लिए किया जाएगा। आपको अपनी फ़ाइल में सेटिंग बनाने, अपडेट करने और शायद सेटिंग्स को हटाने के लिए एक विधि / फ़ंक्शन की आवश्यकता होगी। जैसा कि आप पहले से ही जानते होंगे, JSON फाइल फॉर्मेट, MongoDB डेटाबेस से बहुत अलग नहीं है। इस स्थिति में आप अपनी फ़ाइल प्रबंधित करने के लिए आवश्यक तरीके बना रहे हैं।

आशा है कि ये आपकी मदद करेगा!


-1

आप इसे डेटाबेस के बिना हल कर सकते हैं, लेकिन मैं इसकी सिफारिश नहीं करूंगा। मूल रूप से आपके पास (उपयोगकर्ता, लोकलस्टोरेज) जोड़े हैं और जब कोई दिया गया उपयोगकर्ता खुद को / खुद को पहचानता है, तो उसका / उसका स्थानीय संपर्क एक तरह से प्रदान किया जाना चाहिए। आप उपयोगकर्ताओं को अपने स्थानीय स्टोर को अपनी मशीन पर संग्रहीत करने के लिए कह सकते हैं, लेकिन फिर उन्हें इसे अन्य मशीनों पर कॉपी करना होगा, जो श्रम-गहन है और कभी भी लोकप्रियता हासिल नहीं करेगा। कोई भी मैन्युअल रूप से अपने ब्राउज़र के कंसोल में एक जावास्क्रिप्ट चंक चला सकता है, यह सुनिश्चित करने के लिए कि लोकलस्टोरेज के पास उनका डेटा है और लोकलस्टोरेज को कॉपी करने के लिए मशीनों को मैन्युअल रूप से पूरी चीज़ करने की तुलना में थोड़ा आसान है।

आप लोकलस्टोरेज जानकारी को एक URL में इनकोड कर सकते हैं, लेकिन इसके अलावा URL की लंबाई की समस्या, जो एक समस्या बन सकती है और कभी-कभी मौजूद एन्कोडिंग समस्याएँ हो सकती हैं, आपके पूरे स्थानीयस्टोर की निगरानी आपके राउटर तक होने से, किसी तीसरे पक्ष द्वारा की जा सकती है। मुझे पता है कि आपने कहा है कि डेटा संवेदनशील नहीं है, लेकिन मेरा मानना ​​है कि यह अभी तक संवेदनशील नहीं है । लेकिन एक बार उपयोगकर्ता इसका उपयोग करेंगे, यदि यह सुविधाजनक है, तो वे संवेदनशील डेटा को भी संग्रहीत करेंगे या, आपके ग्राहकों के पास आपके लिए ऐसे कार्य हो सकते हैं, या यहां तक ​​कि आपको यह महसूस हो सकता है कि आपको वहां डेटा संग्रहीत करने की आवश्यकता है जो 100% सार्वजनिक नहीं है।

इन के अलावा, व्यवहार में आप सिंक्रोनाइज़ेशन के बहुत गंभीर मुद्दों का सामना करेंगे, अर्थात, लोकलस्टोरेज को अज्ञेय बनाना अच्छा है, लेकिन फिर, वास्तविक संस्करण क्या है? यदि आप नियमित रूप से 10 अलग-अलग सत्रों में काम करते हैं, तो लोकलस्टोरेज को सिंक्रनाइज़ करना एक कठिन समस्या बन जाती है। इसका मतलब है कि लोकलस्टोरेज को टाइमस्टैम्प करने की जरूरत है।

तो, आपको अंतिम सहेजे गए स्थानीयस्टोरेज संस्करण को स्टोर करने के लिए एक केंद्रीय स्थान, एक सर्वर की आवश्यकता होगी। यदि आप कुछ अनकहे कारणों के लिए डेटाबेस द्वारा टाल दिए जाते हैं, तो आप स्थानीय फाइलों को उन फाइलों के अंदर स्टोर कर सकते हैं, जो उपयोगकर्ता की पहचान करते हैं, जैसे

johndoe.json

और फिर, आपको एक निर्यात सुविधा लागू करने की आवश्यकता होगी, जो उपयोगकर्ता के वर्तमान JSON को सर्वर पर भेज देगा और इसे एक फ़ाइल और एक आयात सुविधा में सहेजता है, जो उपयोगकर्ता के लिए संग्रहीत फ़ाइल डाउनलोड करेगा और यह सुनिश्चित करेगा कि लोकलस्टोरेज अपडेट हो जाए तदनुसार। आप एक साथ दो को भी कर सकते हैं, एक सिंक्रोनाइज़ेशन को लागू कर सकते हैं।

यह अब तक सरल है, लेकिन क्या होगा यदि उपयोगकर्ता के पास पहले से ही अपने स्थानीय लोकलस्टोरेज और सर्वर पर कुछ उपयोगी डेटा है? सबसे सरल दृष्टिकोण एक को दूसरे के साथ ओवरराइड करना है, लेकिन कौन सा? यदि हम आयात कर रहे हैं, तो स्थानीय एक को ओवरराइड किया जाता है, यदि निर्यात किया जाता है, तो सर्वर पर एक को ओवरराइड किया जाता है, यदि हम सिंक्रनाइज़ करते हैं, तो पुराने को ओवरराइड किया जाता है।

हालाँकि, कुछ मामलों में आप एक ही उपयोगकर्ता के दो लोकलस्टोरेज को मर्ज करना चाहते हैं, इसलिए:

नए तत्व

मेरा मानना ​​है कि यदि कोई तत्व नया है, तो इसे किसी तरह से जाना जाना चाहिए, जो इस सत्र में बनाया गया था, जिसे जानना उपयोगी है, क्योंकि इसका मतलब है कि जिस दूसरे सत्र में हम विलय कर रहे हैं, यह नया आइटम नहीं निकाला गया था और इसलिए इसे जोड़ना सहज है।

तत्व बदल जाता है

यदि दो मामलों में एक ही तत्व अलग है, तो नए संस्करण को प्रबल होना चाहिए।

हटाए गए तत्व

दिलचस्प मामला यह है कि जब एक सत्र में इसे हटा दिया गया था और दूसरे में इसे अपडेट किया गया था। इस मामले में मुझे लगता है कि नए बदलाव को प्रबल होना चाहिए।


हालांकि, आपके सर्वोत्तम प्रयासों के बावजूद, उपयोगकर्ता अभी भी गड़बड़ कर सकते हैं (और आपका सॉफ़्टवेयर भी), इसलिए आपके सर्वर पर प्रत्येक सत्र का बैकअप लेने से समझ में आता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.