SkillAgentSearch skills...

Lowkie

Lowkie is an ORM for LokiJS. LokiJS is a document oriented database written in javascript. LokiJS is used to store javascript objects as documents and follows familiar nosql paradigms to query and retrieve documents. Lowkie by default saves data to disk but for client-side usage, data persists in-memory or client side storage (e.g., a session store / localstorage)

Install / Use

/learn @repetere/Lowkie
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Lowkie

Build Status NPM version Coverage Status Join the chat at https://gitter.im/typesettin/lowkie

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

$ npm i lowkie

Full Documentation

Usage (basic)

//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

$ npm i -g grunt-cli jsdoc-to-markdown

For generating documentation

$ grunt doc
$ jsdoc2md lib/**/*.js index.js > doc/api.md

Notes

Testing

$ npm i
$ grunt test

Contributing

fork and create a pull request!

Loki Party

License

MIT

Related Skills

View on GitHub
GitHub Stars9
CategoryData
Updated1y ago
Forks1

Languages

JavaScript

Security Score

75/100

Audited on Aug 6, 2024

No findings