Skip to content

Latest commit

 

History

History
72 lines (55 loc) · 2.2 KB

README.md

File metadata and controls

72 lines (55 loc) · 2.2 KB

gun-synclist

Intro

gun-synclist is a module for Gun(^0.9.x) using Gun.chain. It is basicly the same as the open() module included in Gun/lib. But where open() gives you the full document ( Object ) on every change, gun-synclist behaves a little different.

  • On initial run gun-synclist will return the full set as an Array! ( including the internally used 'lookup' { soul:index })

  • On every change after the initial run it only returns the changed node. but...It gives you the soul of the node, the index in the Array and the full node ( Yeah...including nested properties )

    eg: { soul: "AbCd123..." ,idx: 112, node: {...}

Why?

If you have a list with a lot of items you don't want to rebuild your DOM on every change. Instead you only need to change the changed item.

eg: items.splice( idx,1,node )

What you could do with gun-synclist

Setup

Prerequisites

You need Gun ^0.9.x

 npm install gun-synclist

Node.js

var Gun = require('gun');
require('gun-synclist');

Browser

Just include it as a script tag, and gun-synclist takes care of the rest.

<!-- AFTER you load Gun -->
<script src="node_modules/gun-synclist/gun-synclist.js"></script>

Example

Not much to it..

var items;
var gun = Gun();
var CONTACTS = gun.get('CONTACTS');
CONTACTS.set( { name:'Stefdv',age: 44,profile:{email:"myemail@home.nl"}} )

CONTACTS.synclist( obj => {
  if(obj.list) {
    // initial only!
    items = obj.list;
  } 
  if(obj.node) {
    // on every change.
    items.splice(obj.idx,1,obj.node)
  }
})

Note:

gun-synclist will automatically load everything it can find on the context. This may sound convenient, but may be unnecessary and excessive - resulting in more bandwidth and slower load times for larger data. It could also result in your entire database being loaded, if your app is highly interconnected. Therefore gun-synclist should be used on a set.

That being said... tell me what you want to do and - maybe- i can advise you. I'm not much of an email reader so ping me in gitter @Stefdv

Credits

Thanks to Mark Nadal for writing Gun and for helping out whenever i need.