Skip to content

kumavis/scuttleboat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sailboat upsidedown

Sail the high seas with ScuttleBoat

Like Scuttlebucket, but allows for dynamically adding records later

var ScuttleBoat = require('scuttleboat')
var Model = require('scuttlebutt/model')


// Define sub-document constructor types

opts = {
  constructors: {
    Model: Model,
  },
}


// Setup ScuttleBoats

A = new ScuttleBoat(opts)
B = new ScuttleBoat(opts)

var as = A.createStream()
var bs = B.createStream()

as.pipe(bs).pipe(as)


// Dynamically add sub-documents

aMeta = A.add('meta', 'Model')
aMeta.set('a',9)


// Subdocuments are created and synced

setTimeout(function(){

  console.log( B.get('meta').get('a') ) // => 9

}, 200)

API

Add a sub-document to the boat. The sub-document instance will be created automatically. Provide:

  • the key (string)
  • the type from the list of constructors (string)
  • an (optional) argument to instantiate the instance with. Argument must be serializable. Cannot provide more than one initialization argument.
boat.add(key, type, opts) //=> subdoc

Query a subdoc

boat.get(key) //=> subdoc

Get a list of all subdocs

boat.list() //=> {key1: subdoc1, key2: subdoc2, ...}

Clone a scuttleboat instance

boat.clone()

Listen for new subdocs

boat.on('create', function(key, subdoc){ /* ... */ })

This class inherits from Scuttlebucket, see the documentation there for more info.

About

⛵ Scuttlebucket with a manifest for dynamic records

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published