Skip to content

Commit 9c40912

Browse files
committed
Add "not equal" operator
1 parent e04389c commit 9c40912

File tree

4 files changed

+30
-6
lines changed

4 files changed

+30
-6
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
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

README.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,14 +98,20 @@ GET /posts?_sort=views&_order=DESC
9898
GET /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
```
106106
GET /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

111117
Add `q`

src/server/router/plural.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff 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(/(_lte|_gte|_ne)$/, '')
113+
var elementValue
114+
110115
if (isRange) {
111-
var path = key.replace(/(_lte|_gte)$/, '')
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
}

test/server/plural.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff 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', /json/)
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)

0 commit comments

Comments
 (0)