2014-11-18 3 views

risposta

19

Ecco un esempio di base. Se si dispone di un modello del prodotto (/ comuni/modelli /product.json), estendere il modello con l'aggiunta di un file /common/models/product.js:

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

}; 

questo modo si crea il seguente esempio endpoint: GET/Prodotti/byCatego ry? group = computer

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

+0

ci sono alcuni errori di battitura: 'Product.byGroup' dovrebbe essere' Product.byCategory' e '" SELECT * FROM products' dovrebbe essere '" SELECT * FROM products' –

+1

puoi fornire un esempio di come memorizzare un modello in DB? Voglio dire, come creare un nuovo 'Prodotto' e quindi inserire –

+0

e .. un'altra domanda, che dire di SQL Injection? –

1
  1. esporre un metodo remoto nelle vostre /common/models/model.js
  2. eseguire la query SQL nel metodo remoto (via dataSource.connector.query(sql, cb);
+0

Che cosa succede se si desidera solo un singolo metodo remoto su un nuovo modello? In tal caso, suppongo che usando il tuo suggerimento dovresti disabilitare tutti i metodi remoti predefiniti come find, updateAll, etc usando [disableRemoteMethod] (https://docs.strongloop.com/display/public/LB/Exposing+models+over + REST # ExposingmodelsoverREST-HidingmethodsandRESTendpoint) giusto? –

+0

Sì, credo che sia l'unico modo ATM. Penso che sia qualcosa che dobbiamo rendere più facile per LoopBack 3 perché ho visto più richieste in passato per una funzione di disabilitare tutti o consentire solo n metodi remoti, ecc. Vedi https://github.com/strongloop/loopback/ problemi/843 # issuecomment-112950822 – superkhau