2014-11-18 15 views

Antwort

19

Hier ist ein einfaches Beispiel. Wenn Sie ein Produktmodell haben (/ common/Modelle /product.json), erweitern das Modell durch eine /common/models/product.js Datei hinzufügen:

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 } 
     } 
    ); 

}; 

Dies wird den folgenden Endpunkt Beispiel erstellen: GET/Produkte/byCatego ry? group = Computer

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

+0

gibt es einige Tippfehler: 'Product.byGroup' sollte' Product.byCategory' sein und '" SELECT * FROM Produkte' sollte sein "" SELECT * FROM Produkte " –

+1

können Sie ein Beispiel dafür, wie ein Modell in DB speichern? Ich meine, wie ein neues 'Produkt' zu erstellen und dann einfügen –

+0

und .. eine andere Frage, was ist mit SQL Injection? –

1
  1. eine Remote-Methode in Ihren /common/models/model.js
  2. führen Sie die SQL-Abfrage in dem Remote-Verfahren aussetzen (über dataSource.connector.query(sql, cb);
+0

Was ist, wenn Sie nur eine einzige Remote-Methode an einem neuen Modell wollen? In diesem Fall würde ich meinen Vorschlag verwenden, dass Sie alle standardmäßigen Remote-Methoden wie find, updateAll usw. mit [disableRemoteMethod] (https://docs.strongloop.com/display/public/LB/Exposing+models+over) deaktivieren müssten + REST # ExposingmodeloverREST-HidingmethodsandRESTendpoints) richtig? –

+0

Ja, ich glaube das ist der einzige Weg ATM. Ich denke, das ist etwas, was wir für LoopBack 3 einfacher machen müssen, weil ich in der Vergangenheit mehrere Anfragen für eine Funktion gesehen habe, alle zu deaktivieren oder nur n Remote-Methoden usw. zu erlauben. Siehe https://github.com/strongloop/loopback/ Probleme/843 # issementcomment-112950822 – superkhau

Verwandte Themen