Nel caso io debba utilizzare una query complessa e dinamica su Instant Developer Cloud, quindi se deve avere delle clausole where condizionate da codice e che non riesco a replicare mediante i filtri in una datamap, come posso fare?
Mi viene in aiuto il metodo prepare del database, che insieme a filterBy e orderBy, mi permette di realizzare una query dinamica efficace.
Nel metodo prepare posso scrivere la parte principale della query in modo strutturato, così viene parsata correttamente dal framework, e poi inserire le condizioni aggiuntive nella where.
Faccio un banale esempio:
let empployeeID = 2;
let dm = new App.DataMap(app);
dm = App.Nwind.prepare(app," \
select \
* \
from \
Orders \
");
//
dm.filterBy("EmployeeID = " + empployeeID);
dm.orderBy = "OrderDate desc";
yield dm.load();
console.log("PG - dm :", dm);
In esecuzione questa è la query che viene eseguita:
select
OrderID,
CustomerID,
EmployeeID,
OrderDate,
RequiredDate,
ShippedDate,
ShipVia,
Freight,
ShipName,
ShipAddress,
ShipCity,
ShipRegion,
ShipPostalCode,
ShipCountry
from
Orders
where
EmployeeID = 2
order by
OrderDate last desc
L’esempio è molto semplice ma serve essenzialmente a farvi capire la potenza della prepare.