- DADI API Version 3.0.0 or greater
To use this connector with your DADI API installation, you'll need to add it to your API's dependencies:
$ cd my-api
$ npm install --save @dadi/api-filestore
Run the tests:
$ git clone https://github.com/dadi/api-filestore.git
$ cd api-filestore
$ npm test
Configuration settings are defined in JSON files within a /config
directory at the root of your API application. DADI API has provision for multiple configuration files, one for each environment that your API is expected to run under: development
, qa
and production
.
The naming convention for filestore configuration files follows the format filestore.<environment>.json
For example:
filestore.development.json
filestore.qa.json
filestore.production.json
my-api/
config/ # contains environment-specific
# configuration properties
config.development.json
config.qa.json
config.production.json
filestore.development.json
filestore.qa.json
filestore.production.json
main.js # the entry point of the app
package.json
workspace/
collections/ # collection schema files
endpoints/ # custom Javascript endpoints
{
"database": {
"path": "path/to/your/database(s)",
"autosaveInterval": 1000,
"serializationMethod": "pretty"
}
}
Property | Description | Default |
---|---|---|
path | The relative or absolute path to where your database files will be stored | none |
autosaveInterval | The interval, in milliseconds, between database writes to disk | 5000 (5 seconds) |
serializationMethod | The format of the database file on disk. normal is a condensed version of the JSON, pretty is more readable |
normal |
// explicit
{'Name': { '$eq' : 'Odin' }}
// implicit (assumes equality operator)
{'Name': 'Odin'}
not equal test
{'legs': { '$ne' : 8 }}
// pass in raw regex
var results = coll.find({'Name': { '$regex' : /din/ }});
// or pass in string pattern only
results = coll.find({'Name': { '$regex': 'din' }});
// or pass in [pattern, options] string array
results = coll.find({'Name': { '$regex': ['din', 'i'] }});
If using regex operator within a named transform or dynamic view filter, it is best to use the latter two examples since raw regex does not seem to serialize/deserialize well.
var users = db.addCollection("users");
users.insert({ name : 'odin' });
users.insert({ name : 'thor' });
users.insert({ name : 'svafrlami' });
// match users with name in array set ['odin' or 'thor']
{ 'name' : { '$in' : ['odin', 'thor'] } }
// match users with count value between 50 and 75
{ count : { '$between': [50, 75] } }
var users = db.addCollection("users");
users.insert({ name : 'odin', weapons : ['gungnir', 'draupnir']});
users.insert({ name : 'thor', weapons : ['mjolnir']});
users.insert({ name : 'svafrlami', weapons : ['tyrfing']});
users.insert({ name : 'arngrim', weapons : ['tyrfing']});
// returns 'svafrlami' and 'arngrim' documents
{ 'weapons' : { '$contains' : 'tyrfing' } }
// returns 'svafrlami', 'arngrim', and 'thor' documents
{ 'weapons' : { '$containsAny' : ['tyrfing', 'mjolnir'] } }
// returns 'svafrlami' and 'arngrim'
{ 'weapons' : { '$containsNone' : ['gungnir', 'mjolnir'] } }
fetch documents matching both sub-expressions
{
'$and': [{
'Age' : {
'$gt': 30
}
},{
'Name' : 'Thor'
}]
}
fetch documents matching any of the sub-expressions
{
'$or': [{
'Age' : {
'$gte': '40'
}
},{
'Name' : 'Thor'
}]
}