{"library":"lokijs","title":"LokiJS In-Memory Database","description":"LokiJS is a fast, document-oriented JavaScript in-memory database designed for various environments including browsers, Node.js, and NativeScript. It functions by storing JavaScript objects as documents in a NoSQL fashion, enabling high-performance retrieval through indexing and dynamic views. Currently at version 1.5.12, its release cadence appears infrequent, with the last major update several years ago. Key differentiators include its small footprint, suitability for client-side session stores, and built-in persistence adapters (like localStorage, IndexedDB, or filesystem) that can be extended with custom solutions. It prioritizes speed by maintaining unique and binary indexes and offering dynamic views for frequently accessed data subsets, making it ideal for performance-critical applications where data can reside primarily in memory.","language":"javascript","status":"maintenance","last_verified":"Sun Apr 19","install":{"commands":["npm install lokijs"],"cli":null},"imports":["import Loki from 'lokijs';","const Loki = require('lokijs');","import LokiLocalStorageAdapter from 'lokijs/src/loki-local-storage-adapter';"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import Loki from 'lokijs';\nimport LokiLocalStorageAdapter from 'lokijs/src/loki-local-storage-adapter';\n\nconst dbName = 'myCoolDatabase.db';\nconst adapter = new LokiLocalStorageAdapter(dbName);\n\nconst db = new Loki(dbName, {\n  adapter: adapter,\n  autoload: true,\n  autoloadCallback: databaseInitialize,\n  autosave: true,\n  autosaveInterval: 4000\n});\n\nfunction databaseInitialize() {\n  let users = db.getCollection('users');\n  if (users === null) {\n    users = db.addCollection('users', { unique: ['email'] });\n  }\n\n  // Check if there's any data, if not, insert some\n  if (users.count() === 0) {\n    users.insert({ name: 'Alice', email: 'alice@example.com', age: 30 });\n    users.insert({ name: 'Bob', email: 'bob@example.com', age: 24 });\n    console.log('Initial data inserted.');\n  } else {\n    console.log('Database already contains data.');\n  }\n\n  const allUsers = users.find();\n  console.log('All users:', allUsers);\n\n  const youngUsers = users.find({ age: { '$lt': 25 } });\n  console.log('Users younger than 25:', youngUsers);\n\n  // Update an existing user\n  const alice = users.findOne({ name: 'Alice' });\n  if (alice) {\n    alice.age = 31;\n    users.update(alice);\n    console.log('Alice updated:', users.findOne({ name: 'Alice' }));\n  }\n\n  // Ensure data is saved after modifications if autosave is off or before manual exit\n  // db.saveDatabase(); // Autosave handles this in this example\n}\n\nconsole.log('LokiJS database initialized or loaded.');","lang":"javascript","description":"This quickstart demonstrates how to initialize a LokiJS in-memory database, configure it with the LocalStorage adapter for persistence, add a collection with a unique constraint, insert documents, and perform basic queries and updates. It includes an `autoload` and `autosave` setup to manage data lifecycle across sessions.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}