queryl v1.1.0
queryl
Query language to perform complex object searches.
Description
Queryl allows to to build complex queries to match JavaScript objects. This can be useful to:
- Search collections of objects (even heterogeneus).
- Validate objects.
- Assert properties of an object for testing purposes.
Installation
Install queryl
by running:
$ npm install --save queryl
Documentation
queryl.match(query, object) ⇒ Boolean
Kind: static method of queryl
Summary: Query an object
Returns: Boolean - whether it matches or not
Access: public
Param | Type | Description |
---|---|---|
query | Object | query |
object | Object | object |
Example
queryl.match({
$or: {
$equal: {
foo: 'bar'
},
$and: {
$not: {
$match: {
foo: /^baz/
}
},
$gt: {
bar: 3
}
}
}
}, {
foo: 'hello world',
bar: 5
});
> true
Operations
operations.$and()
Kind: static method of operations
Properties
Name | Type | Description |
---|---|---|
$and | function | logical conjunction |
Example
queryl.match({
$and: {
$equal: {
foo: 'bar'
},
$match: {
bar: /^hello/
}
}
}, {
foo: 'bar',
bar: 'hello world'
});
> true
operations.$or()
Kind: static method of operations
Properties
Name | Type | Description |
---|---|---|
$or | function | logical disjunction |
Example
queryl.match({
$or: {
$equal: {
foo: 'bar'
},
$match: {
bar: /^hello/
}
}
}, {
foo: 'bar',
bar: 'hey there'
});
> true
operations.$not()
Kind: static method of operations
Properties
Name | Type | Description |
---|---|---|
$not | function | logical negation |
Example
queryl.match({
$not: {
$equal: {
foo: 'bar'
}
}
}, {
foo: 'baz'
});
> true
operations.$equal()
This operation supports deep equality.
Kind: static method of operations
Properties
Name | Type | Description |
---|---|---|
$equal | function | equality |
Example
queryl.match({
$equal: {
foo: 'bar'
}
}, {
foo: 'bar'
});
> true
operations.$contain()
This operation supports deep equality.
Kind: static method of operations
Properties
Name | Type | Description |
---|---|---|
$contain | function | collection include |
Example
queryl.match({
$contain: {
foo: 1
}
}, {
foo: [ 1, 2, 3 ]
});
> true
operations.$match()
Kind: static method of operations
Properties
Name | Type | Description |
---|---|---|
$match | function | RegExp match |
Example
queryl.match({
$match: {
foo: /^hello/
}
}, {
foo: 'hello world'
});
> true
operations.$gt()
Kind: static method of operations
Properties
Name | Type | Description |
---|---|---|
$gt | function | greater than |
Example
queryl.match({
$gt: {
foo: 5
}
}, {
foo: 6
});
> true
operations.$lt()
Kind: static method of operations
Properties
Name | Type | Description |
---|---|---|
$lt | function | less than |
Example
queryl.match({
$lt: {
foo: 5
}
}, {
foo: 4
});
> true
Support
If you're having any problem, please raise an issue on GitHub and I'll be happy to help.
Tests
Run the test suite by doing:
$ gulp test
Contribute
- Issue Tracker: github.com/jviotti/queryl/issues
- Source Code: github.com/jviotti/queryl
Before submitting a PR, please make sure that you include tests, and that jshint runs without any warning:
$ gulp lint
License
The project is licensed under the MIT license.