@@ -41,9 +41,6 @@ module.exports = function (db, name) {
4141 // GET /name?_embed=&_expand=
4242 function list ( req , res , next ) {
4343
44- // Filters list
45- var filters = { }
46-
4744 // Resource chain
4845 var chain = db ( name ) . chain ( )
4946
@@ -82,23 +79,24 @@ module.exports = function (db, name) {
8279
8380 }
8481
85- // Add query parameters filters
86- // Convert query parameters to their native counterparts
87- for ( var key in req . query ) {
88- // don't take into account JSONP query parameters
82+ Object . keys ( req . query ) . forEach ( function ( key ) {
83+ // Don't take into account JSONP query parameters
8984 // jQuery adds a '_' query parameter too
9085 if ( key !== 'callback' && key !== '_' ) {
91- filters [ key ] = utils . toNative ( req . query [ key ] )
92- }
93- }
94-
95- // Filter
96- if ( ! _ ( filters ) . isEmpty ( ) ) {
97- for ( var f in filters ) {
98- // This syntax allow for deep filtering using lodash (i.e. a.b.c[0])
99- chain = chain . filter ( f , filters [ f ] )
86+ // Always use an array, in case req.query is an array
87+ var arr = [ ] . concat ( req . query [ key ] )
88+
89+ chain = chain . filter ( function ( element ) {
90+ return arr
91+ . map ( utils . toNative )
92+ . map ( function ( value ) {
93+ return _ . matchesProperty ( key , value ) ( element )
94+ } ) . reduce ( function ( a , b ) {
95+ return a || b
96+ } )
97+ } )
10098 }
101- }
99+ } )
102100
103101 // Sort
104102 if ( _sort ) {
0 commit comments