Dynamic queries
by JayData
HTML
<script src="http://include.jaydata.org/datajs-1.0.3.js"></script>
<script src="http://jaydata.dev.avangrade.org/build/jaydata.js"></script>
<div id="output">
</div>
JavaScript
$data.service("http://jaydata.org/examples/Northwind.svc/", function (f) {
var db = f();
function genericFilter1(tableName, fields, values) {
//works with JayData 1.2.3+
$('#output').append("<h3>Search: " + tableName + " for fields: " + JSON.stringify(fields) +"</h3>");
var q = db[tableName];
fields.forEach(function(fieldName, idx) {
q = q.filter("it." + fieldName + " == p ", {p: values[idx]});
});
return q.toArray();
}
function genericFilter2(tableName, fields, values) {
//works with JayData 1.3+
$('#output').append("<h3>Search: " + tableName + " for fields: " + JSON.stringify(fields) +"</h3>");
var q = db[tableName];
fields.forEach(function(fieldName, idx) {
q = q.filter(fieldName," == ", values[idx]);
});
return q.toArray();
}
$.when(db.ready).then(function (db) {
genericFilter1("Products", ["Category_ID","Supplier_ID"],[1,18]).then(dumpResults);
genericFilter2("Products", ["Category_ID","Supplier_ID"],[2,1]).then(dumpResults);
//db.Products.toArray(dumpResults);
})
function dumpResults(results) {
results.forEach(function(result) {
$('#output').append("<div>" + JSON.stringify(result) + "</div>");
});
}
});