Skip to content

The native LokiJs does not allow synchronous loading of the persistent json/db store before running commands. Using Promises, this library overcomes this and now allows you to load the persistent json/db store first before running any other command.

License

Notifications You must be signed in to change notification settings

joshuaquek/lokijs-promise

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔨 LokiJS Promise

JavaScript Style Guide Maintenance GitHub issues-closed MIT Licence

The native LokiJs does not allow synchronous loading of the persistent json/db store before running commands.

Using Promises, this library overcomes this and now allows you to load the persistent json/db store first before running any other command.

Installation

npm install lokijs-promise

Usage

Full Example:

const { getCollection, initDB, getDB } = require('lokijs-promise')

// Always run this at the start/top of your app to instantiate the DB
initDB('v1.json', 1000) // A file called v1.json will be created in your project repo and will be used as the DB, and it will have an autosave interval of 1000ms (1 second, essentially)

async function someAsyncFunctionAnywhereInYourCode () {

  // Get Insect Collections if exists, if not, it will create one in the DB
  let insects = await getCollection('insects')

  // Query for results
  console.log("\n\n\nQuerying for Existing Records...\n\n");
  let results_1 = insects.find({})
  console.log(results_1)

  // Insert in a new record
  insects.insert({
    'insect_name': 'Dragonfly',
    'insect_description': 'A very nice looking insect.'
  })

  // Query for results
  console.log("\n\n\nQuerying after DB Insertion...\n\n");
  let results_2 = insects.find({})
  console.log(results_2)

  // Do whatever LokiJS stuff etc
  let db = await getDB()
  //....
  //....
  // Examples on how to use `db` found here in the LokiJs documentation: https://rawgit.com/techfort/LokiJS/master/jsdoc/index.html
}

someAsyncFunctionAnywhereInYourCode()

Using Your Own Promise Library

The default Promise library used here would be Bluebird, as it faster for older versions of Node.

Note that in later versions of Node, native Promises are the fastest.

Another extremely performant Promise library you could try is Aigle ( https://github.com/suguru03/aigle ), which is faster than Bluebird in this benchmark: https://github.com/suguru03/aigle/tree/master/benchmark

Either way, you can override the Bluebird promise library this way, anywhere in your code:

const { setPromiseLibrary } = require('lokijs-promise')

setPromiseLibrary(global.Promise) // This sets the Promise library used in lokijs-promise to the native NodeJs Promise library

Contributing

In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.

About

The native LokiJs does not allow synchronous loading of the persistent json/db store before running commands. Using Promises, this library overcomes this and now allows you to load the persistent json/db store first before running any other command.

Resources

License

Stars

Watchers

Forks

Packages

No packages published