File tree Expand file tree Collapse file tree 4 files changed +30
-6
lines changed Expand file tree Collapse file tree 4 files changed +30
-6
lines changed Original file line number Diff line number Diff line change 66
77* CLI option ` -q/--quied `
88* Nested route ` POST /posts/1/comments `
9+ * Not equal operator ` GET /posts?id_ne=1 `
910
1011## [ 0.8.2] [ 2015-10-15 ]
1112
Original file line number Diff line number Diff line change @@ -98,14 +98,20 @@ GET /posts?_sort=views&_order=DESC
9898GET /posts/1/comments?_sort=votes&_order=ASC
9999```
100100
101- ### Range
101+ ### Operators
102102
103- Add ` _gte ` or ` _lte `
103+ Add ` _gte ` or ` _lte ` for getting a range
104104
105105```
106106GET /posts?views_gte=10&views_lte=20
107107```
108108
109+ Add ` _ne ` to exclude a value
110+
111+ ```
112+ GET /posts?id_ne=1
113+ ```
114+
109115### Full-text search
110116
111117Add ` q `
Original file line number Diff line number Diff line change @@ -73,7 +73,8 @@ module.exports = function (db, name) {
7373 query === 'callback' ||
7474 query === '_' ||
7575 query . indexOf ( '_lte' ) !== - 1 ||
76- query . indexOf ( '_gte' ) !== - 1
76+ query . indexOf ( '_gte' ) !== - 1 ||
77+ query . indexOf ( '_ne' ) !== - 1
7778 ) return
7879 }
7980 delete req . query [ query ]
@@ -106,17 +107,23 @@ module.exports = function (db, name) {
106107 return arr
107108 . map ( utils . toNative )
108109 . map ( function ( value ) {
110+ var isDifferent = key . indexOf ( '_ne' ) !== - 1
109111 var isRange = key . indexOf ( '_lte' ) !== - 1 || key . indexOf ( '_gte' ) !== - 1
112+ var path = key . replace ( / ( _ l t e | _ g t e | _ n e ) $ / , '' )
113+ var elementValue
114+
110115 if ( isRange ) {
111- var path = key . replace ( / ( _ l t e | _ g t e ) $ / , '' )
112116 var isLowerThan = key . indexOf ( '_gte' ) !== - 1
113- var elementValue = _ . get ( element , path )
117+ elementValue = _ . get ( element , path )
114118
115119 if ( isLowerThan ) {
116120 return value <= elementValue
117121 } else {
118122 return value >= elementValue
119123 }
124+ } else if ( isDifferent ) {
125+ elementValue = _ . get ( element , path )
126+ return value !== elementValue
120127 } else {
121128 return _ . matchesProperty ( key , value ) ( element )
122129 }
Original file line number Diff line number Diff line change @@ -224,7 +224,7 @@ describe('Server', function () {
224224 } )
225225 } )
226226
227- describe ( 'GET /:resource?attr>=&attr< =' , function ( ) {
227+ describe ( 'GET /:resource?attr_gte=&attr_lte =' , function ( ) {
228228 it ( 'should respond with a limited array' , function ( done ) {
229229 request ( server )
230230 . get ( '/comments?id_gte=2&id_lte=3' )
@@ -234,6 +234,16 @@ describe('Server', function () {
234234 } )
235235 } )
236236
237+ describe ( 'GET /:resource?attr_ne=' , function ( ) {
238+ it ( 'should respond with a limited array' , function ( done ) {
239+ request ( server )
240+ . get ( '/comments?id_ne=1' )
241+ . expect ( 'Content-Type' , / j s o n / )
242+ . expect ( db . comments . slice ( 1 ) )
243+ . expect ( 200 , done )
244+ } )
245+ } )
246+
237247 describe ( 'GET /:parent/:parentId/:resource' , function ( ) {
238248 it ( 'should respond with json and corresponding nested resources' , function ( done ) {
239249 request ( server )
You can’t perform that action at this time.
0 commit comments