Constructor
new JsonDB(rootPath)
Creates or opens a JSON-DB database at the given root directory.
Parameters:
Name | Type | Description |
---|---|---|
rootPath |
String | Root of the JsonDB file hierarchy. The path must be a path within CompleteFTP's virtual file-system (e.g. /databases). |
Methods
appendText(filePath, text)
Append text to a file at the given location (relative to the JSON-DB root).
Parameters:
Name | Type | Description |
---|---|---|
filePath |
String | Path of the file to append the text to. |
text |
String | Text to append. |
dereference(object) → {Object}
Resolves reference properties to the objects that they reference. In this method, the JsonDB
engine will go through all properties of the given object looking for references, i.e.
string properties whose names end with _ref
. For each one that it finds it will read the
object with that reference from the database and add a property to the given object whose
name is the same as the reference property, but with the _ref
suffix removed. The original
object is not modified.
For example, if a database contains one object at /companies/MyCompany
as follows:
{
"name": "MyCompany",
"number": 123456
}
and another as /people/JohnSmith
as follows:
{
"firstName": "John",
"lastName": "Smith",
"company_ref": "/companies/MyCompany"
}
then if dereference
is called on /people/JohnSmith
then it will return:
{
"firstName": "John",
"lastName": "Smith",
"company": {
"name": "MyCompany",
"number": 123456
}
}
Parameters:
Name | Type | Description |
---|---|---|
object |
Object | Object to be dereferenced. This object is not modified. |
Returns:
Object with all reference properties dereferenced.
- Type
- Object
list(pattern, includeFoldersopt) → {Array.<String>}
Returns an array of references to all JSON files matching the given file-path pattern. This method only lists files, so the pattern must not reference fields inside objects. Wildcards (i.e. * or ?) may be placed in any element of the file-path.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
pattern |
String | File-path pattern optionally containing wildcards. |
|
includeFolders |
Boolean |
<optional> |
Folders are included in the list if |
Returns:
Array containing all matches.
- Type
- Array.<String>
query(pattern, comparer, value, type, evaluatoropt, callbackopt) → {Array.<String>}
A JSON-DB may be queried using an object-path containing wild-cards and a comparison. For example,
a JSON-DB has a directory called products
that contains a set of product objects stored in JSON files
whose names are the product IDs, and those objects have a property called colour
. To query for a certain
colour, the pattern would be products/*.colour
. If we want to find all the green objects then
we'd call the query method as follows: myDb.query('products/*.colour', '=', 'green', 'string')
.
The result may be obtained via the callback or the return value.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
pattern |
String | Wildcard object-path. |
|
comparer |
String | Comparison operator to use: |
|
value |
Object | Value to compare with. Normally this is a single value, but if the operator is
|
|
type |
String | Type being queried for: |
|
evaluator |
function |
<optional> |
Evaluation function. If this is defined then the value returned from
the function is matched. The referenced object is passed as an argument to the evaluator function.
E.g. |
callback |
function |
<optional> |
Callback function to call for each match found. |
Returns:
Array containing all matching object references.
- Type
- Array.<String>
read(objectPath, fullResultopt) → {Object}
Reads the object at the given path from the database. The path may specify a directory of JSON files, a specific JSON file, or an property within the object defined in a JSON file. For example, the path 'a/b.c' will reference the property called 'c' within the file with the path 'a/b.json'.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
objectPath |
String | Path of the object. |
|
fullResult |
Boolean |
<optional> |
Should a full result object be returned, or just the object that was read? Defaults to false. |
Returns:
The object returned depends on the 'fullResult' argument. If fullresult is false then the object at the path will be returned or an exception will be thrown if no object is found. If fullResult is true then an object with the following properties will be returned: 'target' the object at the path or null if not found; 'containers' an array of objects above the target object in the object-path; 'path' the object path; 'error' the error that occurred (if any).
- Type
- Object
readBase64(filePath) → {String}
Reads the binary file at the given location and returns the content as a base-64 encoded string.
Parameters:
Name | Type | Description |
---|---|---|
filePath |
String | Path of the file to read. |
Returns:
Content of file as base-64
- Type
- String
readText(filePath) → {String}
Reads the text file at the given location and returns the content as a string.
Parameters:
Name | Type | Description |
---|---|---|
filePath |
String | Path of the file to read. |
Returns:
Content of file
- Type
- String
remove(objectPath)
Removes the object at the given path.
Parameters:
Name | Type | Description |
---|---|---|
objectPath |
String | Path of the object. |
update(objectPath, callback)
Updates an object that already exists in the database using a callback method. The callback function takes a single argument, which is the object that was read from the database. This object may be modified within the callback. The file containing the object will be written back to the database after the callback function returns.
Parameters:
Name | Type | Description |
---|---|---|
objectPath |
String | Path of object to be updated. This may specify a JSON file or an object within a file. |
callback |
function | Callback function that is called for the object. |
write(filePath, object)
Writes the object to a JSON file at the given file-path.
Parameters:
Name | Type | Description |
---|---|---|
filePath |
String | Path of the file to be written. Note that this path must only specify the file and not any object within a file. |
object |
Object | Object to be written. |
writeBase64(filePath, base64)
Writes a binary file at the given location (relative to the JSON-DB root).
Parameters:
Name | Type | Description |
---|---|---|
filePath |
String | Path of the file to write the binary data to. |
base64 |
String | Base-64 encoded binary data to write. |
writeText(filePath, text)
Writes a text file at the given location (relative to the JSON-DB root).
Parameters:
Name | Type | Description |
---|---|---|
filePath |
String | Path of the file to write the text to. |
text |
String | Text to write. |