2012-02-01 8 views
5

मैं jslinq देखता हूं, और नोड और एसक्यूएल का उपयोग करने के लिए टीडीएस जेएस पुस्तकालयों को देखता हूं ... तो क्या किसी ने कभी भी उन तकनीकों का एक साथ उपयोग किया है?क्या कोई जेएस लाइब्रेरी है जो एनडीजेड के साथ एसक्यूएल प्रश्नों के लिए लिनक्स लिखने का समर्थन करती है?

मैं एक NodeJS अनुप्रयोग में एसक्यूएल प्रश्नों का LINQ लिखने में सक्षम होना चाहता हूँ ...

उत्तर

-2

यह संभव नहीं है, आप जावास्क्रिप्ट में एड-हॉक क्वेरी बनाना चाहते हैं तो कम से कम है। लिंक (किसी भी स्वाद का) एक कंपाइलर तकनीक है। लिंक सिंटैक्स या लिंक अभिव्यक्तियों का उपयोग करने वाली एक क्वेरी को सी # या वीबी कंपाइलर द्वारा नियंत्रित किया जाता है, जिसे सीधे डेटाबेस द्वारा व्याख्या नहीं किया जाता है।

ऐसा करने का एक पारंपरिक तरीका सी # में एक वेब सेवा के माध्यम से होगा, लिंक लाने और डेटा स्टोर करने और ग्राहकों को एक स्वच्छ एपीआई प्रस्तुत करने के लिए। फिर ग्राहक AJAX कॉल के माध्यम से सेवा का उपभोग कर सकता है।

1

आपको edge.js ढांचे को चेकआउट करना चाहिए, यह node.js को .Net से जोड़ता है। एक तरीका किनारे में निर्मित टी-एसक्यूएल समर्थन का उपयोग करना होगा, और फिर परिणामों का उपयोग करने के लिए linq.js जैसे कुछ का उपयोग करना होगा।

var getTop10Products = edge.func('sql', function() {/* 
    select top 10 * from Products 
*/}); 

getTop10Product(null, function (error, products) { 
    if (error) throw error; 
    console.log(products); 
}); 

अन्यथा, आप के बाद एक नेट पुस्तकालय में सेटअप एक एफई DataContext सकता है और कहा कि LINQ का उपयोग कर

var getTop10Product = edge.func(function() {/* 
    async (input) => { 
     using (var db = new ProductContext()) 
     { 
     //Linq to EF query 
     var query = from b in db.Products 
        orderby b.Name 
        select b; 
     return query.Take(10).ToList(); 
     } 
    } 
*/}); 
0

मैं आज इस सवाल में आए के रूप में मैं एक ही बात सोच रहा था के लिए बाहर कहते हैं, और थोड़ा और खोज मैं Squel पर आया था।

अपनी वेबसाइट से सीधे हवाला देते हुए:

//this code 
squel.select() 
    .from("students") 
    .field("name") 
    .field("MIN(test_score)") 
    .field("MAX(test_score)") 
    .field("GROUP_CONCAT(DISTINCT test_score ORDER BY test_score DESC SEPARATOR ' ')") 
    .group("name") 
); 

/* will return this SQL query as a string: 
    SELECT 
     name, 
     MIN(test_score), 
     MAX(test_score), 
     GROUP_CONCAT(DISTINCT test_score ORDER BY test_score DESC SEPARATOR ' ') 
    FROM 
     students 
    GROUP BY 
     name 
*/ 

उम्मीद है कि इस जो कोई खोज करते समय इस सवाल भर आता है में मदद मिलेगी।

शुभकामनाएं!

पुनश्च: < मानक सम्मिलित ब्राउज़र में एसक्यूएल प्रश्नों नहीं पैदा कर के बारे में त्याग ... >

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

नीचे पंक्ति: ब्राउज़र में इसका उपयोग न करें!

3

आज, जयदाता http://jaydata.org/ ऐसा करें।

आप नए ES6 तीर समारोह सिंटैक्स (एक ब्राउज़र है कि यह समर्थन करता है, नवीनतम की तरह फ़ायरफ़ॉक्स, या एक transpiler साथ, टाइपप्रति या Traceur) की तरह बहुत सी # के समान दिखता है का उपयोग कर सकते हैं:

todoDB.Todos 
    .filter(todo => todo.Completed == true) 
    .map(todo => todo.Task) 
    .forEach(taskName => $('#list') 
    .append('Task: ' + taskName + ' completed')); 

क्वेरी डेटा स्रोत के आधार पर एक SQL क्वेरी (select Task from Todos where Completed = true) या $ फ़िल्टर URL पैरामीटर (http://.../?$filter=Completed%20eq%201&$select=Task) में परिवर्तित हो जाएगा ...

2

मैंने इस सप्ताह LINQ से इकाइयों के जेएस संस्करण के साथ शुरुआत की है।चेक UniMapperJS

उदाहरण

var comments = await Comment.getAll() 
.where(e => e.author.endsWith("something") || e.author.startsWith("somethingElse")) 
.orderByDescending("created") 
.limit(10) 
.skip(0) 
.exec(); 

लेकिन जे एस की सीमा के cuz, यह पता लगाने के लिए, कैसे जहां में चर स्वीकार करने के लिए, क्योंकि वह तीर कार्यों स्ट्रिंग के रूप में पार्स कर रहे हैं मुश्किल था। मैंने इसे "आभासी" चर ($) और अंतिम परम के रूप में तर्कों की सूची द्वारा हल किया है।

var comments = await Comment.getAll() 
.where(e => e.author.endsWith($) || e.author.startsWith($), filter.endsWith, filter.name) 
.orderByDescending("created") 
.limit(10) 
.skip(0) 
.select(e => e.author) 
.exec(); 
संबंधित मुद्दे

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