Implemented operator

pull/2/head
Louis Chatriot 12 years ago
parent 24827f5ab0
commit f08d912c5c
  1. 6
      lib/model.js
  2. 13
      test/model.test.js

@ -340,6 +340,12 @@ comparisonFunctions.$in = function (a, b) {
return false; return false;
}; };
comparisonFunctions.$nin = function (a, b) {
if (!util.isArray(b)) { throw "$nin operator called with a non-array"; }
return !comparisonFunctions.$in(a, b);
};
/** /**
* Match any of the subqueries * Match any of the subqueries

@ -495,6 +495,19 @@ describe('Model', function () {
(function () { model.match({ a: 5 }, { a: { $in: 5 } }); }).should.throw(); (function () { model.match({ a: 5 }, { a: { $in: 5 } }); }).should.throw();
}); });
it('$nin', function () {
model.match({ a: 5 }, { a: { $nin: [6, 8, 9] } }).should.equal(true);
model.match({ a: 6 }, { a: { $nin: [6, 8, 9] } }).should.equal(false);
model.match({ a: 7 }, { a: { $nin: [6, 8, 9] } }).should.equal(true);
model.match({ a: 8 }, { a: { $nin: [6, 8, 9] } }).should.equal(false);
model.match({ a: 9 }, { a: { $nin: [6, 8, 9] } }).should.equal(false);
// Matches if field doesn't exist
model.match({ a: 9 }, { b: { $nin: [6, 8, 9] } }).should.equal(true);
(function () { model.match({ a: 5 }, { a: { $in: 5 } }); }).should.throw();
});
}); });

Loading…
Cancel
Save