2014-11-18 6 views
7

यह कैसे कच्चे क्वेरी निष्पादित और strongloop साथ बाकी एपीआई के माध्यम से परिणाम का पर्दाफाश करने के लिए संभव है?MySQL लूपबैक कनेक्टर पर कच्चे क्वेरी निष्पादित

मैंने hooks और dataSource.connector.query() का उपयोग करने के बारे में कुछ पढ़ा है लेकिन मुझे कोई कामकाजी उदाहरण नहीं मिल रहा है।

उत्तर

19

यहाँ एक बुनियादी उदाहरण है। यदि आप एक उत्पाद मॉडल है (/ आम/मॉडल में एक दूरस्थ विधि का पर्दाफाश

module.exports = function(Product) { 

    Product.byCategory = function (category, cb) { 

     var ds = Product.dataSource; 
     var sql = "SELECT * FROM products WHERE category=?"; 

     ds.connector.query(sql, category, function (err, products) { 

      if (err) console.error(err); 

      cb(err, products); 

     }); 

    }; 

    Product.remoteMethod(
     'byCategory', 
     { 
      http: { verb: 'get' }, 
      description: 'Get list of products by category', 
      accepts: { arg: 'category', type: 'string' }, 
      returns: { arg: 'data', type: ['Product'], root: true } 
     } 
    ); 

}; 

यह निम्न endpoint उदाहरण पैदा करेगा: उत्पादों को प्राप्त// byCatego /product.json), एक /common/models/product.js फ़ाइल जोड़कर मॉडल का विस्तार ry? समूह = कंप्यूटर

http://docs.strongloop.com/display/public/LB/Executing+native+SQL

+0

वहाँ कुछ ग़लतियां नहीं हैं: 'Product.byGroup'" उत्पादों 'से चुनें * होना चाहिए' "का चयन करें * उत्पादों' –

+1

से आप कैसे का एक उदाहरण प्रदान कर सकते हैं Product.byCategory' होना चाहिए 'और' डीबी में एक मॉडल स्टोर करने के लिए? मेरा मतलब है, एक नया 'उत्पाद' कैसे बनाएं और फिर –

+0

डालें और .. दूसरा प्रश्न, एसक्यूएल इंजेक्शन के बारे में क्या? –

1
  1. अपने /common/models/model.js
  2. दूरस्थ विधि (में एसक्यूएल क्वेरी निष्पादित के माध्यम से dataSource.connector.query(sql, cb);
+0

क्या होगा यदि आप एक नए मॉडल पर केवल एक ही दूरस्थ विधि चाहते हैं? उस मामले में मैं अपने सुझाव आप चाहते हैं का उपयोग कर लगता है (विकलांग खोज, updateAll, आदि [disableRemoteMethod] का उपयोग कर की तरह सभी डिफ़ॉल्ट दूरदराज के तरीकों के लिए है https://docs.strongloop.com/display/public/LB/Exposing+models+over + आरईएसटी # एक्सपोजिंगमोडेलओवररेस्ट-हैडिंगमेथ्स एंडरेस्टेंडपॉइंट्स) सही? –

+0

हां, मुझे विश्वास है कि एटीएम का एकमात्र तरीका है। मुझे लगता है कि यह कुछ है जो हमें लूपबैक 3 के लिए आसान बनाने की ज़रूरत है क्योंकि मैंने अतीत में कई अनुरोधों को अक्षम करने के लिए एक सुविधा के लिए कई अनुरोधों को देखा है या केवल दूरस्थ रिमोट विधियों को इजाजत दी है। Https://github.com/strongloop/loopback/ देखें मुद्दों/843 # issuecomment-112,950,822 – superkhau

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