diff --git a/src/backend/memory.js b/src/backend/memory.js index 347f2ccf..1c98be13 100644 --- a/src/backend/memory.js +++ b/src/backend/memory.js @@ -120,6 +120,12 @@ this.recline.Backend = this.recline.Backend || {}; var numRows = queryObj.size; var start = queryObj.from; results = this.datasets[model.id].documents; + _.each(queryObj.filters, function(filter) { + results = _.filter(results, function(doc) { + var fieldId = _.keys(filter.term)[0]; + return (doc[fieldId] == filter.term[fieldId]); + }); + }); // not complete sorting! _.each(queryObj.sort, function(sortObj) { var fieldName = _.keys(sortObj)[0]; diff --git a/test/backend.test.js b/test/backend.test.js index 666818b7..9b5453d3 100644 --- a/test/backend.test.js +++ b/test/backend.test.js @@ -79,7 +79,17 @@ test('Memory Backend: query sort', function () { }); }); +test('Memory Backend: filters', function () { + var dataset = makeBackendDataset(); + dataset.queryState.addTermFilter('country', 'UK'); + dataset.query().then(function() { + equal(dataset.currentDocuments.length, 3); + deepEqual(dataset.currentDocuments.pluck('country'), ['UK', 'UK', 'UK']); + }); +}); + test('Memory Backend: facet', function () { + console.log('here'); var dataset = makeBackendDataset(); dataset.queryState.addFacet('country'); dataset.query().then(function() {