2012-08-14 26 views
5

मैं एचटीएमएल 5 अनुक्रमित डीबी में दो टेबल में शामिल होना चाहता हूं। मुझे रिकॉर्ड जोड़ने, अपडेट करने, हटाने और रिकॉर्ड करने के लिए बहुत सारे नमूने मिले लेकिन एकाधिक तालिका में शामिल होने के लिए कोई नमूने नहीं मिला।एचटीएमएल 5 इंडेक्स डीबी में जुड़ने का उपयोग कैसे करें?

  • नमूना URL: * http://users.telenet.be/kristofdegrave/ *

उत्तर

1

जहाँ तक मुझे पता है, IndexedDB कर मिलती है के लिए एक API नहीं है, अभी तक। मेरे द्वारा अपनाए गए समाधानों में एक कर्सर खोलना, परिणामों के माध्यम से लूप करना और मैन्युअल रूप से शामिल होना शामिल था। यह भयानक आरबीएआर दृष्टिकोण है, लेकिन मुझे एक बेहतर समाधान नहीं मिला।

1

इंडेक्सड डीबी वास्तव में ऑब्जेक्ट स्टोर में ऑब्जेक्ट स्टोर और मानक है, इसमें शामिल होने की कम आवश्यकता है क्योंकि आप केवल नेस्टेड संरचना को बचा सकते हैं।

यदि आप दिखाते हैं कि कोडोडेबल से डेटा वास्तविक डेटा में शामिल हो जाता है। किसी भी शामिल होने के बिना इसे हल करने का मामला बस अपनी कोड तालिका को स्मृति में लाता है (आमतौर पर यह डेटा कभी नहीं बदलता) और कोड में शामिल होने के लिए।

+0

+1, हे क्रिस्टोफ इनपुट के लिए धन्यवाद, क्या आप कुछ कोड या यूआरएल दिखा सकते हैं। –

2

कोई भी शामिल नहीं है, लेकिन आप एकाधिक ऑब्जेक्ट स्टोर खोल सकते हैं और कर्सर पुनरावृत्तियों के दौरान शामिल हो सकते हैं।

मेरे अपने ydn-db पुस्तकालय का उपयोग करके आप द्वारा

var iter_supplier = new ydn.db.IndexValueIterator('Supplier', 'CITY'); 
var iter_part = new ydn.db.IndexValueIterator('Part', 'CITY'); 
var req = db.scan(function(keys, values) { 
    var SID = keys[0]; 
    var PID = keys[1]; 
    console.log(SID, PID); 
    if (!SID || !PID) { 
    return []; // done 
    } 
    var cmp = ydn.db.cmp(SID, PID); // compare keys 
    if (cmp == 0) { 
    console.log(values[0], values[1]); 
    return [true, true]; // advance both 
    } else if (cmp == 1) { 
    return [undefined, SID]; // jump PID cursor to match SID 
    } else { 
    return [PID, undefined]; // jump SID cursor to match PID 
    } 
}, [iter_supplier, iter_part]); 

Join query article बारे में अधिक विस्तार देखें SELECT * FROM Supplier, Part WHERE Supplier.CITY = Part.CITY क्वेरी कर सकते हैं।

5

वही प्रश्न सोच रहा था जब आम तौर पर इन तकनीकों को देखते हैं। अपने विशेष उदाहरण जाँच नहीं था, लेकिन यहाँ है कि कैसे एक करने के लिए पर मोज़िला से एक उदाहरण यदि आपको आवश्यकता में शामिल होने है:

https://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/

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

+0

इस के बाद से बहुत कुछ बदल गया है। 2016 में इसे कैसे किया जाए इस पर कोई अपडेट? – Rexford

1

शामिल होने का प्रयास करने के बजाय, डेटा को स्टोर करने के तरीके को फिर से डिज़ाइन करें ताकि एक जरूरी आवश्यकता न हो। जब आप नो-एसक्यूएल दृष्टिकोण का उपयोग कर रहे हों तो आपको SQL के समान सामान्यीकरण बाधाओं का पालन करने की आवश्यकता नहीं है। नो-एसक्यूएल उचित होने पर डेटा को अनावश्यक रूप से संग्रहीत करने का समर्थन करता है।