UNPKG

lowkie

Version:

My Custom lowkie / Express Applcation

140 lines (121 loc) 3.86 kB
# Lowkie [![Build Status](https://travis-ci.org/typesettin/lowkie.svg?branch=master)](https://travis-ci.org/typesettin/lowkie) [![NPM version](https://badge.fury.io/js/lowkie.svg)](http://badge.fury.io/js/lowkie) [![Coverage Status](https://coveralls.io/repos/github/typesettin/lowkie/badge.svg?branch=master)](https://coveralls.io/github/typesettin/lowkie?branch=master) [![Join the chat at https://gitter.im/typesettin/lowkie](https://badges.gitter.im/typesettin/lowkie.svg)](https://gitter.im/typesettin/lowkie?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) ### Description Lowkie is a lokijs object modeling tool designed to work in an asynchronous environment. <p style="text-align:center;"><img src="https://raw.githubusercontent.com/typesettin/lowkie/master/doc/lowkie.png" alt="Promisie Logo" width="300px" height="auto" style="margin:auto; text-align:center;"></p> ### Installation ```sh $ npm i lowkie ``` ### [Full Documentation](https://github.com/typesettin/lowkie/blob/master/doc/api.md) ### Usage (basic) ```javascript //lowkie singleton const lowkie = require('lowkie'); //connect to lowkie (includes loki connection configuration), options can include other loki adapters besides structured file adapters lowkie.connect(path.join(__dirname, './sampledb.json'),options) .then((db) => { console.log('connected db'); }) .catch(e => { console.log('connection error', e); }); //listen for connection errors lowkie.connection.on('connectionError', (e)=>{ console.log('error connecting to the db',e); }); //listen for connecting status, dbname is the path to the db json file lowkie.connection.on('connecting', (dbname, options)=>{ console.log('now trying to connect to db'); }); //once connected, create models, query the db, etc lowkie.connection.once('connected', (db, options)=>{ console.log('now connected to db'); //create a new schema const UserSchema = lowkie.Schema({ email:String, username:String, age:Number, }); //register db models, each model is a proxied loki collection with additional helpers const User = lowkie.model('User',UserSchema); //write data to db User.insert({ email:'test@domain.com', username:'testuser', age:30, invalidProp:'whatever', //removes invalid schema props on creates }) .then(newuser => { //created db /* { "_id":"fbd8080a9272ecaa15d1bb6d0f4b3314", "email":"test@domain.com", "username":"testuser", "age":30, "meta":{ "revision":0, "created":1490576236063, "version":0 }, "$loki":201 } */ console.log({ newuser }); }) .catch(e => { console.log(e); }); //insert multiple documents User.insert([ { email:'john@domain.com', username:'jsmith', age:37, }, { email:'jane@domain.com', username:'jdoe', age:45, }, { email:'chris@domain.com', username:'clane', age:17, }, ]) .then((newusers)=>{ console.log(newusers); }) .catch(e =>{ console.log(e); }) //query loki for data let userQueryResults = User.find({ id: { '$gte': 1 } }); console.log({userQueryResults}) //result of user query }); ``` ### Development *Make sure you have grunt installed* ```sh $ npm i -g grunt-cli jsdoc-to-markdown ``` For generating documentation ```sh $ grunt doc $ jsdoc2md lib/**/*.js index.js > doc/api.md ``` ### Notes * Check out [https://github.com/typesettin/lowkie](https://github.com/typesettin/lowkie) for the full Lowkie Documentation ### Testing ```sh $ npm i $ grunt test ``` ### Contributing fork and create a pull request! ![Loki Party](https://raw.githubusercontent.com/typesettin/lowkie/master/doc/img/loki-party.gif) License ---- MIT