Queries
Queries allow the user to search for models of interest. Queries are initiated from the ModelService via the query() method. The method takes a query syntax similar to SQL. Presently only a SELECT statement is supported. The SELECT statement grammar is as follows:
SELECT [ * ]
[ FROM <Collection> ]
[ WHERE <Condition>* ]
[ ORDER BY (<Field> [ ASC|DESC ])* ]
[ LIMIT <MaxRecords> ]
[ OFFSET <SkipRecords> ]
API
The query() method asynchronously returns the set of models matching the query via a promise. The result of the query is an array of ModelResult objects which contain metadata describing the matching models. Each object contains the matched model's collectionId and modelId, allowing you to open if so desired.
const query = modelService
.query("SELECT * FROM employees WHERE employeeId = '1001'")
.then(results => {
results.data.forEach(result => console.log(result));
});
The ModelResult class exports several public properties:
class ModelResult {
collectionId: string;
modelId: string;
created: Date;
modified: Date;
version: number;
data: {[key: string]: any}
}
From the data in ModelResult class models can be opened from the ModelService if needed.
Conditional Expressions
Conditional expressions are used in the WHERE clause to narrow the search results. They are made up of fields and operators. Examples are shown below:
Conditional Operator
| Operator | Name | Example |
|---|---|---|
| = | Equals | length = 5 |
| != | Not Equal | length != 0 |
| > | Greater Than | age > 21 |
| < | Less Than | length < 1 |
| >= | Greater Than or Equal To | age >= 21 |
| <= | Less Than of Equal To | age <= 21 |
| IN | In | firstName IN ["bob", "alice"] |
| LIKE | Like | lastName LIKE '%smith' |
Logical Operators
| Operator | Name | Example |
|---|---|---|
| AND | And | firstName = 'bob' AND lastName = 'smith' |
| OR | Or | firstName = 'bob' or firstName = 'alice' |
| NOT | Not | NOT(firstName = 'bob' ) |
Mathematical Operators
| Operator | Name | Example | | --- | --- | | + | Add | height = width * 2 | | - | Subtract | length = width - 10 | | * | Multiply | x2 = x * x | | / | Divide | x = 1 / 2 | | % | Modulo | remainder = 10 % 2 |
SELECT Examples
SELECT * FROM employees WHERE employeeId = 1 AND NOT(manager = true)SELECT * FROM customer WHERE lastName LIKE %smith%SELECT * FROM person WHERE age > 21 ORDER BY lastName DESC