Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

indexed-db-as-promised

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

indexed-db-as-promised

A thin Promise-like wrapper around IndexedDB

  • 0.1.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

indexed-db-as-promised Build Status

npm version

A thin wrapper around IndexedDB, making it much more pleasant to use by returning Promise-likes. Inspired by ideas in indexeddb-promised, but written with the SyncPromise library to avoid issues with the transaction lifetime.

This is not an official Google product.

Installation

npm install --save indexed-db-as-promised

Usage

The APIs mirror native IndexedDB's, just returning a promise-like everywhere you would want one.

import indexedDBP from "indexed-db-as-promised";

indexedDBP.open('database', 1, {
  upgrade(db, { transaction, oldVersion, newVersion }) {
    const people = db.createObjectStore('people', { autoIncrement: true, keyPath: 'id' });
    people.createIndex('ssn', 'ssn', { unique: true });
    people.createIndex('lastName', 'last');

    people.add({ first: 'Jane', last: 'Smith', ssn: '111-11-1111' });
  }
}).then((db) => {
  // Get the Jane's record
  return db.transaction('people').run((tx) => {
    // #run returns a Promise like that will resolve to whatever we return in
    // this block.
    const ssn = tx.objectStore('people').index('ssn');
    return ssn.get('111-11-1111');
  }).then((record) => {
    console.log(record); // => { first: 'Jane', last: 'Smith', ssn: '111-11-1111' }

    // Let's add someone, then get the total number of Smiths.
    return db.transaction('people', 'readwrite').run((tx) => {

      const store = tx.objectStore('people');
      return store.put({ first: 'John', last: 'Smith', ssn: '111-11-1112' })
        .then((key) => {
          console.log(key); // => 2

          return store.index('lastName').count(IDBKeyRange.only('Smith'));
        });
    });
  }).then((count) => {
    console.log(count); // => 2

    // Let's iterate over everyone.
    return db.transaction('people').run((tx) => {

      // Let's gather all our SSNs with a cursor.
      const open = tx.objectStore('people').openCursor();
      return open.iterate((cursor) => {
        const record = cursor.value;

        // Continue/advance (if you want to), or don't and early-exit iteration.
        cursor.continue();

        return record.ssn;
      }).then((ssns) => {
        console.log(ssns); // => ['111-11-1111', '111-11-1112']
      });
    });
  }).then(() => {
    // Let's close our connection now.
    db.close();
  });
});

License

Apache 2.0

Keywords

FAQs

Package last updated on 03 Jul 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc