MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB सर्वर डेटा को IndexedDB लोकल स्टोर में सिंक्रोनाइज़ करना

[2021 के लिए समन्वयन समाधान ]

मुझे पता है कि पूछा गया प्रश्न विशेष रूप से मोंगोडीबी के लिए था, लेकिन चूंकि यह एक पुराना धागा है, मैंने सोचा कि पाठक नए ऐप्स या पुनर्निर्माण के लिए अन्य समाधानों की तलाश में हो सकते हैं। मैं वास्तव में AceBase देखने की अनुशंसा कर सकता हूं क्योंकि यह वही करता है जो आप तब ढूंढ रहे थे।

AceBase एक फ्री और ओपन सोर्स रीयलटाइम डेटाबेस है जो ब्राउज़र और सर्वर डेटाबेस के बीच आसान स्टोरेज और सिंक्रोनाइज़ेशन को सक्षम बनाता है। यह ब्राउज़र में IndexedDB का उपयोग करता है, सर्वर पर इसका अपना बाइनरी डीबी/एसक्यूएल सर्वर/एसक्यूलाइट स्टोरेज है। ऑफ़लाइन संपादन पुन:कनेक्ट होने पर समन्वयित किए जाते हैं और क्लाइंट को वेबसोकेट (फास्ट!) के माध्यम से रीयलटाइम में दूरस्थ डेटाबेस परिवर्तनों के बारे में सूचित किया जाता है।

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

निम्न उदाहरण दिखाता है कि ब्राउज़र में स्थानीय इंडेक्सडडीबी डेटाबेस कैसे बनाया जाए, स्थानीय डेटाबेस के साथ समन्वयित दूरस्थ डेटाबेस सर्वर से कैसे कनेक्ट किया जाए, और एक लाइव डेटा प्रॉक्सी कैसे बनाया जाए जो आगे डेटाबेस कोडिंग को समाप्त कर दे। AceBase प्रमाणीकरण और प्राधिकरण का भी समर्थन करता है, लेकिन मैंने इसे सरलता के लिए छोड़ दिया।

const { AceBaseClient } = require('acebase-client');
const { AceBase } = require('acebase');

// Create local database with IndexedDB storage:
const cacheDb = AceBase.WithIndexedDB('mydb-local');

// Connect to server database, use local db for offline storage:
const db = new AceBaseClient({ dbname: 'mydb', host: 'db.myproject.com', port: 443, https: true, cache: { db: cacheDb } });

// Wait for remote database to be connected, or ready to use when offline:
db.ready(async () => {

    // Create live data proxy for a chat:
    const emptyChat = { title: 'New chat', messages: {} };
    const proxy = await db.ref('chats/chatid1').proxy(emptyChat);  // Use emptyChat if chat node doesn't exist

    // Get object reference containing live data:
    const chat = proxy.value;

    // Update chat's properties to save to local database, 
    // sync to server AND all other clients monitoring this chat in realtime:
    chat.title = `Changing the title`;
    chat.messages.push({ 
        from: 'ewout', 
        sent: new Date(),
        text: `Sending a message that is stored in the database and synced automatically was never this easy!` +
              `This message might have been sent while we were offline. Who knows!`
    });

    // To monitor and handle realtime changes to the chat:
    chat.onChanged((val, prev, isRemoteChange, context) => {
        if (val.title !== prev.title) { 
            alert(`Chat title changed to ${val.title} by ${isRemoteChange ? 'us' : 'someone else'}`); 
        }
    });
});

अधिक उदाहरणों और दस्तावेज़ीकरण के लिए, देखें ऐसबेस रीयलटाइम डेटाबेस इंजन npmjs.com पर



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगो डीबी ऑब्जेक्ट आईडी जेएसओएन सीरिएलाइज़र का उपयोग करके deserializing

  2. मैं जाने में (एमजीओ का उपयोग करके) मोंगो से लौटाए गए मनमानी हैश से कैसे निपटूं?

  3. MongoDB:बल्क इंसर्ट (Bulk.insert) बनाम मल्टीपल इंसर्ट (इन्सर्ट ([...]))

  4. स्प्रिंग डेटा MongoDB में किसी क्वेरी के लिए केवल विशिष्ट फ़ील्ड लौटाएं

  5. मोंगोस का उपयोग करके मोंगोडीबी से डेटा कैसे प्राप्त करें?