Class: Loki

Loki

new Loki(filename, optionsopt)

Loki: The main database class

Parameters:
Name Type Attributes Description
filename string

name of the file to be saved to

options object <optional>

(Optional) config options object

Properties
Name Type Description
env string

override environment detection as 'NODEJS', 'BROWSER', 'CORDOVA'

verbose boolean

enable console output (default is 'false')

autosave boolean

enables autosave

autosaveInterval int

time interval (in milliseconds) between saves (if dirty)

autoload boolean

enables autoload on loki instantiation

autoloadCallback function

user callback called after database load

adapter adapter

an instance of a loki persistence adapter

serializationMethod string

['normal', 'pretty', 'destructured']

destructureDelimiter string

string delimiter used for destructured serialization

throttledSaves boolean

if true, it batches multiple calls to to saveDatabase reducing number of disk I/O operations and guaranteeing proper serialization of the calls. Default value is true.

Implements:
Source:

Methods

addCollection(name, optionsopt) → {Collection}

Adds a collection to the database.

Parameters:
Name Type Attributes Description
name string

name of collection to add

options object <optional>

(optional) options to configure collection with.

Properties
Name Type Description
unique array

array of property names to define unique constraints for

exact array

array of property names to define exact constraints for

indices array

array property names to define binary indexes for

asyncListeners boolean

default is false

disableChangesApi boolean

default is true

autoupdate boolean

use Object.observe to update objects automatically (default: false)

clone boolean

specify whether inserts and queries clone to/from user

cloneMethod string

'parse-stringify' (default), 'jquery-extend-deep', 'shallow'

ttlInterval int

time interval for clearing out 'aged' documents; not set by default.

Source:
Returns:

a reference to the collection which was just added

Type
Collection

anonym(docs, options) → {Collection}

Shorthand method for quickly creating and populating an anonymous collection. This collection is not referenced internally so upon losing scope it will be garbage collected.

Parameters:
Name Type Description
docs Array

document array to initialize the anonymous collection with

options object

configuration object, see Loki#addCollection options

Source:
Returns:

New collection which you can query or chain

Type
Collection
Example
var results = new loki().anonym(myDocArray).find({'age': {'$gt': 30} });

clearChanges()

(Changes API) : clears all the changes in all collections.

Source:

close(callbackopt)

Emits the close event. In autosave scenarios, if the database is dirty, this will save and disable timer. Does not actually destroy the db.

Parameters:
Name Type Attributes Description
callback function <optional>

(Optional) if supplied will be registered with close event before emitting.

Source:

configureOptions(options, initialConfig)

Allows reconfiguring database options

Parameters:
Name Type Description
options object

configuration options to apply to loki db object

Properties
Name Type Description
env string

override environment detection as 'NODEJS', 'BROWSER', 'CORDOVA'

verbose boolean

enable console output (default is 'false')

autosave boolean

enables autosave

autosaveInterval int

time interval (in milliseconds) between saves (if dirty)

autoload boolean

enables autoload on loki instantiation

autoloadCallback function

user callback called after database load

adapter adapter

an instance of a loki persistence adapter

serializationMethod string

['normal', 'pretty', 'destructured']

destructureDelimiter string

string delimiter used for destructured serialization

initialConfig boolean

(internal) true is passed when loki ctor is invoking

Source:

copy(options)

Copies 'this' database into a new Loki instance. Object references are shared to make lightweight.

Parameters:
Name Type Description
options object

apply or override collection level settings

Properties
Name Type Description
removeNonSerializable bool

nulls properties not safe for serialization.

Source:

deleteDatabase(options, callbackopt)

Handles deleting a database from file system, local storage, or adapter (indexeddb) This method utilizes loki configuration options (if provided) to determine which persistence method to use, or environment detection (if configuration was not provided).

Parameters:
Name Type Attributes Description
options object

not currently used (remove or allow overrides?)

callback function <optional>

(Optional) user supplied async callback / error handler

Source:

deserializeCollection(destructuredSource, options) → {array}

Deserializes a destructured collection.

Parameters:
Name Type Description
destructuredSource string | array

destructured representation of collection to inflate

options object

used to describe format of destructuredSource input

Properties
Name Type Description
delimited int

whether source is delimited string or an array

delimiter string

(optional) if delimited, this is delimiter to use

Source:
Returns:

an array of documents to attach to collection.data.

Type
array

deserializeDestructured(destructuredSource, optionsopt) → {object|array}

Destructured JSON deserialization routine to minimize memory overhead. Internally, Loki supports destructuring via loki "serializationMethod' option and the optional LokiPartitioningAdapter class. It is also available if you wish to do your own structured persistence or data exchange.

Parameters:
Name Type Attributes Description
destructuredSource string | array

destructured json or array to deserialize from

options object <optional>

source format options

Properties
Name Type Attributes Description
partitioned bool <optional>

(default: false) whether db and each collection are separate

partition int <optional>

can be used to deserialize only a single partition

delimited bool <optional>

(default: true) whether subitems are delimited or subarrays

delimiter string <optional>

override default delimiter

Source:
Returns:

An object representation of the deserialized database, not yet applied to 'this' db or document array

Type
object | array

generateChangesNotification(optionalopt) → {array}

(Changes API) : takes all the changes stored in each collection and creates a single array for the entire database. If an array of names of collections is passed then only the included collections will be tracked.

Parameters:
Name Type Attributes Description
optional array <optional>

array of collection names. No arg means all collections are processed.

Source:
See:
  • private method createChange() in Collection
Returns:

array of changes

Type
array

getCollection(collectionName) → {Collection}

Retrieves reference to a collection by name.

Parameters:
Name Type Description
collectionName string

name of collection to look up

Source:
Returns:

Reference to collection in database by that name, or null if not found

Type
Collection

loadDatabase(options, callbackopt)

Handles loading from file system, local storage, or adapter (indexeddb) This method utilizes loki configuration options (if provided) to determine which persistence method to use, or environment detection (if configuration was not provided). To avoid contention with any throttledSaves, we will drain the save queue first.

Parameters:
Name Type Attributes Description
options object

if throttling saves and loads, this controls how we drain save queue before loading

Properties
Name Type Description
recursiveWait boolean

(default: true) wait recursively until no saves are queued

recursiveWaitLimit bool

(default: false) limit our recursive waiting to a duration

recursiveWaitLimitDelay int

(default: 2000) cutoff in ms to stop recursively re-draining

callback function <optional>

(Optional) user supplied async callback / error handler

Source:

loadJSON(serializedDb, options)

Inflates a loki database from a serialized JSON string

Parameters:
Name Type Description
serializedDb string

a serialized loki database string

options object

apply or override collection level settings

Source:

loadJSONObject(dbObject, options)

Inflates a loki database from a JS object

Parameters:
Name Type Description
dbObject object

a serialized loki database string

options object

apply or override collection level settings

Properties
Name Type Attributes Description
retainDirtyFlags bool <nullable>

whether collection dirty flags will be preserved

Source:

removeCollection(collectionName)

Removes a collection from the database.

Parameters:
Name Type Description
collectionName string

name of collection to remove

Source:

saveDatabase(callbackopt)

Handles saving to file system, local storage, or adapter (indexeddb) This method utilizes loki configuration options (if provided) to determine which persistence method to use, or environment detection (if configuration was not provided).

Parameters:
Name Type Attributes Description
callback function <optional>

(Optional) user supplied async callback / error handler

Source:

serialize() → {string}

Serialize database to a string which can be loaded via Loki#loadJSON

Source:
Returns:

Stringified representation of the loki database.

Type
string

serializeChanges() → {string}

(Changes API) - stringify changes for network transmission

Source:
Returns:

string representation of the changes

Type
string

serializeCollection(options) → {string|array}

Utility method to serialize a collection in a 'destructured' format

Parameters:
Name Type Description
options object

used to determine output of method

Properties
Name Type Attributes Description
delimited int <optional>

whether to return single delimited string or an array

delimiter string <optional>

(optional) if delimited, this is delimiter to use

collectionIndex int

specify which collection to serialize data for

Source:
Returns:

A custom, restructured aggregation of independent serializations for a single collection.

Type
string | array

serializeDestructured(optionsopt) → {string|array}

Destructured JSON serialization routine to allow alternate serialization methods. Internally, Loki supports destructuring via loki "serializationMethod' option and the optional LokiPartitioningAdapter class. It is also available if you wish to do your own structured persistence or data exchange.

Parameters:
Name Type Attributes Description
options object <optional>

output format options for use externally to loki

Properties
Name Type Attributes Description
partitioned bool <optional>

(default: false) whether db and each collection are separate

partition int <optional>

can be used to only output an individual collection or db (-1)

delimited bool <optional>

(default: true) whether subitems are delimited or subarrays

delimiter string <optional>

override default delimiter

Source:
Returns:

A custom, restructured aggregation of independent serializations.

Type
string | array

throttledSaveDrain(callback, optionsopt)

Wait for throttledSaves to complete and invoke your callback when drained or duration is met.

Parameters:
Name Type Attributes Description
callback function

callback to fire when save queue is drained, it is passed a sucess parameter value

options object <optional>

configuration options

Properties
Name Type Description
recursiveWait boolean

(default: true) if after queue is drained, another save was kicked off, wait for it

recursiveWaitLimit bool

(default: false) limit our recursive waiting to a duration

recursiveWaitLimitDelay int

(default: 2000) cutoff in ms to stop recursively re-draining

Source: