2011-01-18 5 views
26

हमारे JSON डेटा एक भी MySQL तालिका से आता है कहते हैं:जावास्क्रिप्ट पुस्तकालय जो JSON डेटा पर SQL- जैसे प्रश्नों की अनुमति देते हैं?

someJSON = [ { name: 'bill' , sex:'M', income:50000 }, 
       { name: 'sara' , sex:'F', income:100000 }, 
       ... 
       ]; 

और कहते हैं कि छद्म कोड है:

"income> 60000` के सभी sex:F के सभी व्यक्ति वस्तुओं प्राप्त करें"।

क्या कोई जावास्क्रिप्ट पुस्तकालय है जो किसी को SQL या SQL- जैसे सिंटैक्स का उपयोग करके इस JSON डेटा पर ऐसे प्रश्नों को कोड करने की अनुमति देगा।

मैं जानते हुए भी कि भविष्य बैकएंड हो जाएगा बिना अपने संगठन के लिए एक डेटा विश्लेषण वेब सेवा के सामने के अंत बनाने हूँ:

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

उत्तर

12

बाहर चेक jslinq:

var myList = [ 
      {FirstName:"Chris",LastName:"Pearson"}, 
      {FirstName:"Kate",LastName:"Johnson"}, 
      {FirstName:"Josh",LastName:"Sutherland"}, 
      {FirstName:"John",LastName:"Ronald"}, 
      {FirstName:"Steve",LastName:"Pinkerton"} 
      ]; 

var exampleArray = JSLINQ(myList) 
        .Where(function(item){ return item.FirstName == "Chris"; }) 
        .OrderBy(function(item) { return item.FirstName; }) 
        .Select(function(item){ return item.FirstName; }); 
1

आप पूर्ण पूछताछ के साथ एक JSON-style डेटा स्टोर MongoDB को देखने में रुचि रखते हैं। यहाँ अपने query syntax:

db.users.find({'last_name': 'Smith'}) 

अपने उदाहरण प्रश्न के लिए है:

db.users.find({'sex': 'F', 'income' : {$gt : 60000}}) 
+0

सामान्य रूप में अच्छा सुझाव में यह प्रयास करें, लेकिन इस सवाल का IMHO – Kristian

1

वहाँ भी JsonSql जो कि तुम क्या कर रहे हैं की तरह समान लगता है खोज रहे हैं केवल समस्या यह है कि इसे 12/30/2007 में अपडेट नहीं किया गया है। अभी भी कोड पकड़ने और खेलने के लिए कोड है।

1

आपके द्वारा समर्थित ब्राउज़र/संस्करणों के आधार पर, मैं HTML5 client-side SQL का उपयोग करने का प्रयास करता हूं, मेरे JSON डेटा को एक या अधिक तालिकाओं में दबाकर और वास्तविक SQL क्वेरीज़ की शक्ति का उपयोग करने का प्रयास करता हूं। http://www.w3.org/TR/webdatabase/

+0

धन्यवाद ... क्योंकि आपका उत्तर की मैं अनुसंधान करने के लिए IndexDB शुरू कर दिया है गरीब जवाब , फ़ायरफ़ॉक्स के लिए क्लाइंट-साइड डेटाबेस 4. https://developer.mozilla.org/en/IndexedDB/IndexedDB_primer –

7

मैं इस http://code.google.com/p/jfunk/ कौन सा उपयोगकर्ताओं jQuery शैली चयनकर्ताओं कहा जाता है:

यहाँ मसौदा कल्पना है Taffydb का उपयोग करें। TaffyDB एक opensouce लाइब्रेरी है जो आपके जावास्क्रिप्ट अनुप्रयोगों में डेटाबेस सुविधाओं को लाती है। http://taffydb.com/

+1

हमने हाल ही में हमारे वेब ऐप विकास में TaffyDB का उपयोग शुरू किया है और यह बहुत सरल है बहुत सी चीजें जो हम कर रहे हैं। कुछ बिंदु हैं कि यह अजीब है, लेकिन कुल मिलाकर यह बहुत जादुई है। :) –

1

मुझे पता है कि सवाल पुराना है लेकिन मैं यहां Google खोज के माध्यम से आया हूं। मैं बस objeq के बारे में एक बात का पालन कर रहा हूं। आप जो खोज रहे हैं वह बहुत ही आशाजनक और बहुत कुछ दिखता है।

6

आप alasql.js आज़मा सकते हैं। यह शुद्ध जावास्क्रिप्ट क्लाइंट-साइड एसक्यूएल-सर्वर है, जहां आप JSON ऑब्जेक्ट्स पर क्वेरी कर सकते हैं।

// Fill table with data 
    var data = [ { name: 'bill' , sex:'M', income:50000 }, 
       { name: 'sara' , sex:'F', income:100000 }]; 

    // Do the query 
    console.log(alasql("SELECT * FROM ? WHERE sex='F' AND income > 60000",[data])); 

Fiddle

1

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.3.min.js"></script> 
 
\t <script type="text/javascript" src="linq.js"></script> 
 
\t <script type="text/javascript"> 
 
var jsonArray = [ 
 
    { "user": { "id": 100, "screen_name": "d_linq" }, "text": "to objects" }, 
 
    { "user": { "id": 130, "screen_name": "c_bill" }, "text": "g" }, 
 
    { "user": { "id": 155, "screen_name": "b_mskk" }, "text": "kabushiki kaisha" }, 
 
    { "user": { "id": 301, "screen_name": "a_xbox" }, "text": "halo reach" } 
 
] 
 
// ["b_mskk:kabushiki kaisha", "c_bill:g", "d_linq:to objects"] 
 
var queryResult = Enumerable.From(jsonArray) 
 
    .Where(function (x) { return x.user.id < 200 }) 
 
    .OrderBy(function (x) { return x.user.screen_name }) 
 
    .Select(function (x) { return x.user.screen_name + ':' + x.text }) 
 
    .ToArray(); 
 
// shortcut! string lambda selector 
 
var queryResult2 = Enumerable.From(jsonArray) 
 
    .Where("$.user.id < 200") 
 
    .OrderBy("$.user.screen_name") 
 
    .Select("$.user.screen_name + ':' + $.text") 
 
    .ToArray(); 
 

 
console.log(queryResult); 
 
console.log(queryResult2); 
 
\t </script> 
 
</head> 
 
<body> 
 

 

 
</body> 
 
</html>

संबंधित मुद्दे

 संबंधित मुद्दे