Skip to content
This repository was archived by the owner on Sep 30, 2023. It is now read-only.

orbitdb-archive/orbit-db-docstore

Repository files navigation

orbit-db-docstore

npm Gitter Matrix

Document Store for orbit-db

Database for storing indexed documents. Stores documents by _id field by default but you can also specify a custom field to index by.

This is a core data store in orbit-db

Table of Contents

Install

This project uses npm and nodejs

npm install orbit-db-docstore

Usage

import * as IPFS from 'ipfs'
import OrbitDB from 'orbit-db'

const ipfs = new IPFS()
const orbitdb = await OrbitDB.createInstance(ipfs)
const docstore = await orbitdb.docstore('db name')

docstore.put({ _id: 'hello world', doc: 'all the things' })
  .then(() => docstore.put({ _id: 'sup world', doc: 'other things' }))
  .then(() => docstore.get('hello'))
  .then((value) => console.log(value))
  // [{ _id: 'hello world', doc: 'all the things'}]

You can specify the field to index by in the options:

const docstore = await orbitdb.docstore('db name', { indexBy: 'doc' })

docstore.put({ _id: 'hello world', doc: 'some things' })
  .then(() => docstore.put({ _id: 'hello universe', doc: 'all the things' }))
  .then(() => docstore.get('all'))
  .then((value) => console.log(value))
  // [{ _id: 'hello universe', doc: 'all the things'}]

You can also use a mapper to query the documents

const docstore = await orbitdb.docstore('db name')

docstore.put({ _id: 'hello world', doc: 'some things', views: 10 })
  .then(() => docstore.put({ _id: 'hello universe', doc: 'all the things', views: 100 }))
  .then(() => docstore.put({ _id: 'sup world', doc: 'other things', views: 5 }))
  .then(() => docstore.query((e)=> e.views > 5))
  .then((value) => console.log(value))
  // [{ _id: 'hello world', doc: 'some things', views: 10}, { _id: 'hello universe', doc: 'all the things', views: 100}]

API

See orbit-db API documentation for full details

docstore(name, options)

Package: orbit-db-docstore

const db = await orbitdb.docstore('orbit.users.shamb0t.profile')

By default, documents are indexed by field '_id'. You can also specify the field to index by:

const db = await orbitdb.docstore('orbit.users.shamb0t.profile', { indexBy: 'name' })
  • put(doc)

    db.put({ _id: 'QmAwesomeIpfsHash', name: 'shamb0t', followers: 500 }).then((hash) => ...)
  • get(key)

    const profile = db.get('shamb0t')
      .map((e) => e.payload.value)
    // [{ _id: 'shamb0t', name: 'shamb0t', followers: 500 }]
  • query(mapper)

    const all = db.query((doc) => doc.followers >= 500)
    // [{ _id: 'shamb0t', name: 'shamb0t', followers: 500 }]
  • del(key)

    db.del('shamb0t').then((removed) => ...)
  • events

    db.events.on('data', (dbname, event) => ... )

    See events for full description.

Contributing

If you think this could be better, please open an issue!

Please note that all interactions in @orbitdb fall under our Code of Conduct.

License

MIT ©️ 2015-2018 shamb0t, Haja Networks Oy

About

Document Store for orbit-db

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 10

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy