From e9f00fbd8bd0f965e5596cfb7c7678749a038a0b Mon Sep 17 00:00:00 2001 From: Raymond Feng Date: Fri, 29 Aug 2014 08:45:45 -0700 Subject: [PATCH] Add neq operator support for memory connector See https://github.com/strongloop/loopback-datasource-juggler/issues/265 --- lib/connectors/memory.js | 8 ++++++-- test/memory.test.js | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/lib/connectors/memory.js b/lib/connectors/memory.js index 97687cf2..99b05230 100644 --- a/lib/connectors/memory.js +++ b/lib/connectors/memory.js @@ -406,7 +406,7 @@ function applyFilter(filter) { if (typeof value === 'string' && (example instanceof RegExp)) { return value.match(example); } - if (example === undefined || value === undefined) { + if (example === undefined) { return undefined; } if (typeof example === 'object') { @@ -425,6 +425,10 @@ function applyFilter(filter) { return false; } + if (example.neq) { + return compare(example.neq, value) !== 0; + } + if (example.like || example.nlike) { var like = example.like || example.nlike; @@ -445,7 +449,7 @@ function applyFilter(filter) { } } // not strict equality - return (example !== null ? example.toString() : example) == (value !== null ? value.toString() : value); + return (example !== null ? example.toString() : example) == (value != null ? value.toString() : value); } /** diff --git a/test/memory.test.js b/test/memory.test.js index 40283b82..4fb2c934 100644 --- a/test/memory.test.js +++ b/test/memory.test.js @@ -199,6 +199,30 @@ describe('Memory connector', function () { }); }); + it('should support neq operator for number', function (done) { + User.find({where: {order: {neq: 6}}}, function (err, users) { + should.not.exist(err); + users.length.should.be.equal(5); + for (var i = 0; i < users.length; i++) { + users[i].order.should.not.be.equal(6); + } + done(); + }); + }); + + it('should support neq operator for string', function (done) { + User.find({where: {role: {neq: 'lead'}}}, function (err, users) { + should.not.exist(err); + users.length.should.be.equal(4); + for (var i = 0; i < users.length; i++) { + if (users[i].role) { + users[i].role.not.be.equal('lead'); + } + } + done(); + }); + }); + function seed(done) { var beatles = [ {