Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
Freddie
@Fredaroo_twitter
Hi guys, I've been playing around with Gun it the past few days. It's great :)
I have a few basic/conceptual questions I wasn't able to get with the docs though. I didn't want to bother you here so I opened it on StackOverflow if you want to have a look: stackOverflow link Hopefully I'm not the only one with such questions
Wasis Haryo Sasoko
@yokowasis
@jabis the reason it's get called only once before, is because I still have your data of 2019/06/22 I put more data something like 2019/06/22:10:10:10.30 2019/06/22:10:10:10.33, etc. it only read your data. the lex is {'.': {'*': '2019/06/22'}, "%" : 5000}
Jabis Sevon
@jabis
is 5000 bytes too low
50000bytes is max
Wasis Haryo Sasoko
@yokowasis
but when i change the lexical to {'.': {'*': '2019/06/22:'}, "%" : 5000} it results multiple of my data
5KB is still a lot for just hello world node.
Jabis Sevon
@jabis
yeah true
I note you have 2019/06/22:10:10:10.33 I don't how lex sorting on multiple : : : would work, that's not a date format imo
Wasis Haryo Sasoko
@yokowasis
can you try my finding :
put something like 2019/06, 2019/06/21, 2019/06/22, 2019/06/23, 2019/06/24
here is my complete data
{
  "2019/05/25:10:10:10.30": {
    "#": "chat/2019/05/25:10:10:10.30"
  },
  "2019/05/21:10:10:10.30": {
    "#": "chat/2019/05/21:10:10:10.30"
  },
  "2019/05/22:10:10:10.30": {
    "#": "chat/2019/05/22:10:10:10.30"
  },
  "2019/05/23:10:10:10.30": {
    "#": "chat/2019/05/23:10:10:10.30"
  },
  "2019/06/23:10:10:10.30": {
    "#": "chat/2019/06/23:10:10:10.30"
  },
  "2019/06/21:10:10:10.30": {
    "#": "chat/2019/06/21:10:10:10.30"
  },
  "2019/06/22:10:10:10.30": {
    "#": "chat/2019/06/22:10:10:10.30"
  },
  "2019/06/24:10:10:10.30": {
    "#": "chat/2019/06/24:10:10:10.30"
  },
  "2019/06/25:10:10:10.30": {
    "#": "chat/2019/06/25:10:10:10.30"
  },
  "2019/06/20:10:10:10.30": {
    "#": "chat/2019/06/20:10:10:10.30"
  },
  "2019/05": {
    "#": "chat/2019/05"
  }
}
gunHeroku.get('chat').get({'.': {'*': '2019/05'}, "%" : 5000}).map().once(s=>{
  console.log (s);  //This only fired once
})
is this an expected result ?

I note you have 2019/06/22:10:10:10.33 I don't how lex sorting on multiple : : : would work, that's not a date format imo

I copied it from the docs.

Wasis Haryo Sasoko
@yokowasis

from the docs :

* prefix match or (2 <) match. If {'*': 'key'} is specified, (2 >) will not match.

what do (2<) and (2>) means ?

Jabis Sevon
@jabis
image.png
image.png
values I was expecting :)
Wasis Haryo Sasoko
@yokowasis

Hi guys, I've been playing around with Gun it the past few days. It's great :)
I have a few basic/conceptual questions I wasn't able to get with the docs though. I didn't want to bother you here so I opened it on StackOverflow if you want to have a look: stackOverflow link Hopefully I'm not the only one with such questions

@amark , the docs really need some big overhaul.

@jabis what's the query ?
Jabis Sevon
@jabis
you can see it in the first snip
Lorenzo Mangani @qxip
@lmangani:matrix.org
[m]
GUN is opensource, improving docs is a perfectly valid way to contribute back ;)
Jabis Sevon
@jabis
@yokowasis
console.log("testing get {'.':{'>':'2021/06'} expecting 6 output")
  var i = 1;
  var raddy = gun.get(key).get({'.':{'>':'2021/06'},'%':50000}).map(data=>{
    i++;
    console.log("getter found data",data);
    if(i==2) t.equal(data.stuff, "22", "expected result to be `22` correct") 
    if(i==3) t.equal(data.stuff, "23", "expected result to be `23` correct")
    if(i==4) t.equal(data.stuff, "24", "expected result to be `24` correct")
    if(i==5) t.equal(data.stuff, "25", "expected result to be `25` correct")
    if(i==6) t.equal(data.stuff, "31 1.00", "expected result to be `31 1.00` correct")
    if(i==7) t.equal(data.stuff, "31 1.30", "expected result to be `31 1.30` correct")

  }).once();
  t.end();
Wasis Haryo Sasoko
@yokowasis

GUN is opensource, improving docs is a perfectly valid way to contribute back ;)

How can I contribute ? is there a github repo for the docs ?

2 replies
Jabis Sevon
@jabis
it's in lexicographically correct order here
Wasis Haryo Sasoko
@yokowasis
@jabis can you send me your data object ?
Jabis Sevon
@jabis
result7 {
 _: {
    '#': 'chat',
    '>': {
      '2021/05/31': 1632566761209,
      '2021/06/22 01:00:00': 1632566761312,
      '2021/06/23 01:30:00': 1632566761313.002,
      '2021/06/24 01:00:00': 1632566761314.001,
      '2021/06/25 01:30:00': 1632566761315,
      '2021/06/31 01:00:00': 1632566761315.004,
      '2021/06/31 01:30:00': 1632566761315.008
    }
  },
  '2021/05/31': { '#': 'chat.102jvom' },
  '2021/06/22 01:00:00': { '#': 'chat.-ipfkim' },
  '2021/06/23 01:30:00': { '#': 'chat.-oi86lk' },
  '2021/06/24 01:00:00': { '#': 'chat.-ug9s0o' },
  '2021/06/25 01:30:00': { '#': 'chat.-1492e3m' },
  '2021/06/31 01:00:00': { '#': 'chat.1tg6rqc' },
  '2021/06/31 01:30:00': { '#': 'chat.1tirdef' }
}
Tested also with prefix
testing get {'.':{'*':'2021/06'} expecting 6 output
mapfn Map functions are experimental, their behavior and API may change moving forward. Please play with it and report bugs and ideas on how to improve it.
getter found data {
  _: { '#': 'chat.-ipfkim', '>': { stuff: 1632566761312 } },
  stuff: '22'
}
ok 1 expected result to be `22` correct
getter found data {
  _: { '#': 'chat.-oi86lk', '>': { stuff: 1632566761313.002 } },
  stuff: '23'
}
ok 2 expected result to be `23` correct
getter found data {
  _: { '#': 'chat.-ug9s0o', '>': { stuff: 1632566761314.001 } },
  stuff: '24'
}
ok 3 expected result to be `24` correct
getter found data {
  _: { '#': 'chat.-1492e3m', '>': { stuff: 1632566761315 } },
  stuff: '25'
}
ok 4 expected result to be `25` correct
getter found data {
  _: { '#': 'chat.1tg6rqc', '>': { stuff: 1632566761315.004 } },
  stuff: '31 1.00'
}
ok 5 expected result to be `31 1.00` correct
getter found data {
  _: { '#': 'chat.1tirdef', '>': { stuff: 1632566761315.008 } },
  stuff: '31 1.30'
}
ok 6 expected result to be `31 1.30` correct
valonce Chainable val is experimental, its behavior and API may change moving forward. Please play with it and report bugs and ideas on how to improve it.
# force test to end
ok 7 forcing test to end with process.exit

1..7
# tests 7
# pass  7

# ok
this time set up else also which should've failed if there was extra data
var raddy = gun.get(key).get({'.':{'*':'2021/06'},'%':50000}).map(data=>{
    i++;
    console.log("getter found data",data);

    if(i==2) { t.equal(data.stuff, "22", "expected result to be `22` correct") 
    } else if(i==3) { t.equal(data.stuff, "23", "expected result to be `23` correct")
    } else if(i==4) { t.equal(data.stuff, "24", "expected result to be `24` correct")
    } else if(i==5) { t.equal(data.stuff, "25", "expected result to be `25` correct")
    } else if(i==6) { t.equal(data.stuff, "31 1.00", "expected result to be `31 1.00` correct")
    } else if(i==7) { t.equal(data.stuff, "31 1.30", "expected result to be `31 1.30` correct")
    } else { t.equal(data.stuff, "we shouldn't be here"); }
  }).once();
Adam Bowman
@abow
anyone else see certify() break when updating gun from 0.2020.1234 to 0.2020.1235 ?
1 reply
Jabis Sevon
@jabis
also dropped the bytes to 5000 same results
Wasis Haryo Sasoko
@yokowasis
@jabis I mean your json data.

here is my complete data

{
  "2019/05/25:10:10:10.30": {
    "#": "chat/2019/05/25:10:10:10.30"
  },
  "2019/05/21:10:10:10.30": {
    "#": "chat/2019/05/21:10:10:10.30"
  },
  "2019/05/22:10:10:10.30": {
    "#": "chat/2019/05/22:10:10:10.30"
  },
  "2019/05/23:10:10:10.30": {
    "#": "chat/2019/05/23:10:10:10.30"
  },
  "2019/06/23:10:10:10.30": {
    "#": "chat/2019/06/23:10:10:10.30"
  },
  "2019/06/21:10:10:10.30": {
    "#": "chat/2019/06/21:10:10:10.30"
  },
  "2019/06/22:10:10:10.30": {
    "#": "chat/2019/06/22:10:10:10.30"
  },
  "2019/06/24:10:10:10.30": {
    "#": "chat/2019/06/24:10:10:10.30"
  },
  "2019/06/25:10:10:10.30": {
    "#": "chat/2019/06/25:10:10:10.30"
  },
  "2019/06/20:10:10:10.30": {
    "#": "chat/2019/06/20:10:10:10.30"
  },
  "2019/05": {
    "#": "chat/2019/05"
  }
}

like this

Jabis Sevon
@jabis
I pasted it already above
'2021/05/31': { '#': 'chat.102jvom' },
'2021/06/22 01:00:00': { '#': 'chat.-ipfkim' },
'2021/06/23 01:30:00': { '#': 'chat.-oi86lk' },
'2021/06/24 01:00:00': { '#': 'chat.-ug9s0o' },
'2021/06/25 01:30:00': { '#': 'chat.-1492e3m' },
'2021/06/31 01:00:00': { '#': 'chat.1tg6rqc' },
'2021/06/31 01:30:00': { '#': 'chat.1tirdef' }
Wasis Haryo Sasoko
@yokowasis
@jabis can you add one more data with key 2021/06
and try to rerun your test > : 2021/06
and * : 2021/06
Jabis Sevon
@jabis
testing get {'.':{'>':'2021/06'} expecting 7 outputs
mapfn Map functions are experimental, their behavior and API may change moving forward. Please play with it and report bugs and ideas on how to improve it.
getter found data {
  _: { '#': 'chat.-1b4get8', '>': { stuff: 1632567525735 } },
  stuff: '2021/06'
}
ok 1 expected result to be `2021/06` correct
getter found data {
  _: { '#': 'chat.-ipfkim', '>': { stuff: 1632567525904 } },
  stuff: '22'
}
ok 2 expected result to be `22` correct
getter found data {
  _: { '#': 'chat.-oi86lk', '>': { stuff: 1632567525905.003 } },
  stuff: '23'
}
ok 3 expected result to be `23` correct
getter found data {
  _: { '#': 'chat.-ug9s0o', '>': { stuff: 1632567525906.002 } },
  stuff: '24'
}
ok 4 expected result to be `24` correct
getter found data {
  _: { '#': 'chat.-1492e3m', '>': { stuff: 1632567525907.002 } },
  stuff: '25'
}
ok 5 expected result to be `25` correct
getter found data {
  _: { '#': 'chat.1tg6rqc', '>': { stuff: 1632567525907.006 } },
  stuff: '31 1.00'
}
ok 6 expected result to be `31 1.00` correct
getter found data {
  _: { '#': 'chat.1tirdef', '>': { stuff: 1632567525908 } },
  stuff: '31 1.30'
}
ok 7 expected result to be `31 1.30` correct
valonce Chainable val is experimental, its behavior and API may change moving forward. Please play with it and report bugs and ideas on how to improve it.
# force test to end
ok 8 forcing test to end with process.exit

1..8
# tests 8
# pass  8

# ok
and
testing get {'.':{'*':'2021/06'} expecting 7 outputs
mapfn Map functions are experimental, their behavior and API may change moving forward. Please play with it and report bugs and ideas on how to improve it.
getter found data {
  _: { '#': 'chat.-1b4get8', '>': { stuff: 1632567559855 } },
  stuff: '2021/06'
}
ok 1 expected result to be `2021/06` correct
getter found data {
  _: { '#': 'chat.-ipfkim', '>': { stuff: 1632567559960 } },
  stuff: '22'
}
ok 2 expected result to be `22` correct
getter found data {
  _: { '#': 'chat.-oi86lk', '>': { stuff: 1632567559960.004 } },
  stuff: '23'
}
ok 3 expected result to be `23` correct
getter found data {
  _: { '#': 'chat.-ug9s0o', '>': { stuff: 1632567559961.003 } },
  stuff: '24'
}
ok 4 expected result to be `24` correct
getter found data {
  _: { '#': 'chat.-1492e3m', '>': { stuff: 1632567559962.002 } },
  stuff: '25'
}
ok 5 expected result to be `25` correct
getter found data {
  _: { '#': 'chat.1tg6rqc', '>': { stuff: 1632567559962.006 } },
  stuff: '31 1.00'
}
ok 6 expected result to be `31 1.00` correct
getter found data {
  _: { '#': 'chat.1tirdef', '>': { stuff: 1632567559963.002 } },
  stuff: '31 1.30'
}
ok 7 expected result to be `31 1.30` correct
valonce Chainable val is experimental, its behavior and API may change moving forward. Please play with it and report bugs and ideas on how to improve it.
# force test to end
ok 8 forcing test to end with process.exit

1..8
# tests 8
# pass  8

# ok
Object was
_: {
    '#': 'chat',
    '>': {
      '2021/06': 1632567559855,
      '2021/06/22 01:00:00': 1632567559960,
      '2021/06/23 01:30:00': 1632567559960.004,
      '2021/06/24 01:00:00': 1632567559961.003,
      '2021/06/25 01:30:00': 1632567559962.002,
      '2021/06/31 01:00:00': 1632567559962.006,
      '2021/06/31 01:30:00': 1632567559963.002
    }
  },
  '2021/06': { '#': 'chat.-1b4get8' },
  '2021/06/22 01:00:00': { '#': 'chat.-ipfkim' },
  '2021/06/23 01:30:00': { '#': 'chat.-oi86lk' },
  '2021/06/24 01:00:00': { '#': 'chat.-ug9s0o' },
  '2021/06/25 01:30:00': { '#': 'chat.-1492e3m' },
  '2021/06/31 01:00:00': { '#': 'chat.1tg6rqc' },
  '2021/06/31 01:30:00': { '#': 'chat.1tirdef' }
}
Wasis Haryo Sasoko
@yokowasis

let me rephrase my quesiton :
imagine this is the data

'2021/05/31': { '#': 'chat.102jvom' },
'2021/05/30 01:00:00': { '#': 'chat.-ipfkim' },
'2021/05/29 01:00:00': { '#': 'chat.-ipfkim' },
'2021/05/28 01:00:00': { '#': 'chat.-ipfkim' },
'2021/05': { '#': 'chat.-ipfkim' },
'2021/06': { '#': 'chat.-ipfkim' },
'2021/06/22 01:00:00': { '#': 'chat.-ipfkim' },
'2021/06/22 01:00:00': { '#': 'chat.-ipfkim' },
'2021/06/23 01:30:00': { '#': 'chat.-oi86lk' },
'2021/06/24 01:00:00': { '#': 'chat.-ug9s0o' },
'2021/06/25 01:30:00': { '#': 'chat.-1492e3m' },
'2021/06/31 01:00:00': { '#': 'chat.1tg6rqc' },
'2021/06/31 01:30:00': { '#': 'chat.1tirdef' }

What's the query to get

'2021/06': { '#': 'chat.-ipfkim' },
'2021/06/22 01:00:00': { '#': 'chat.-ipfkim' },
'2021/06/22 01:00:00': { '#': 'chat.-ipfkim' },
'2021/06/23 01:30:00': { '#': 'chat.-oi86lk' },
'2021/06/24 01:00:00': { '#': 'chat.-ug9s0o' },
'2021/06/25 01:30:00': { '#': 'chat.-1492e3m' },
'2021/06/31 01:00:00': { '#': 'chat.1tg6rqc' },
'2021/06/31 01:30:00': { '#': 'chat.1tirdef' }
Jabis Sevon
@jabis
lemme add the 2021/05 back in :)
>2021/06 would result in anything over 2021/06
 _: {
    '#': 'chat',
    '>': {
      '2021/05': 1632567792690,
      '2021/06': 1632567792795,
      '2021/06/22 01:00:00': 1632567792796.002,
      '2021/06/23 01:30:00': 1632567792796.006,
      '2021/06/24 01:00:00': 1632567792797.002,
      '2021/06/25 01:30:00': 1632567792798.002,
      '2021/06/31 01:00:00': 1632567792798.006,
      '2021/06/31 01:30:00': 1632567792799.001
    }
  },
  '2021/05': { '#': 'chat.-1b4get9' },
  '2021/06': { '#': 'chat.-1b4get8' },
  '2021/06/22 01:00:00': { '#': 'chat.-ipfkim' },
  '2021/06/23 01:30:00': { '#': 'chat.-oi86lk' },
  '2021/06/24 01:00:00': { '#': 'chat.-ug9s0o' },
  '2021/06/25 01:30:00': { '#': 'chat.-1492e3m' },
  '2021/06/31 01:00:00': { '#': 'chat.1tg6rqc' },
  '2021/06/31 01:30:00': { '#': 'chat.1tirdef' }
}
total dataset
and still passing
testing get {'.':{'*':'2021/06'} expecting 7 outputs
mapfn Map functions are experimental, their behavior and API may change moving forward. Please play with it and report bugs and ideas on how to improve it.
getter found data {
  _: { '#': 'chat.-1b4get8', '>': { stuff: 1632567792795 } },
  stuff: '2021/06'
}
ok 1 expected result to be `2021/06` correct
getter found data {
  _: { '#': 'chat.-ipfkim', '>': { stuff: 1632567792796.002 } },
  stuff: '22'
}
ok 2 expected result to be `22` correct
getter found data {
  _: { '#': 'chat.-oi86lk', '>': { stuff: 1632567792796.006 } },
  stuff: '23'
}
ok 3 expected result to be `23` correct
getter found data {
  _: { '#': 'chat.-ug9s0o', '>': { stuff: 1632567792797.002 } },
  stuff: '24'
}
ok 4 expected result to be `24` correct
getter found data {
  _: { '#': 'chat.-1492e3m', '>': { stuff: 1632567792798.002 } },
  stuff: '25'
}
ok 5 expected result to be `25` correct
getter found data {
  _: { '#': 'chat.1tg6rqc', '>': { stuff: 1632567792798.006 } },
  stuff: '31 1.00'
}
ok 6 expected result to be `31 1.00` correct
getter found data {
  _: { '#': 'chat.1tirdef', '>': { stuff: 1632567792799.001 } },
  stuff: '31 1.30'
}
ok 7 expected result to be `31 1.30` correct
valonce Chainable val is experimental, its behavior and API may change moving forward. Please play with it and report bugs and ideas on how to improve it.
# force test to end
ok 8 forcing test to end with process.exit

1..8
no 2021/05 in the hoods
also with "*" prefixed it's returning correctly only 2021/06
why don't you try it yourself
Jabis Sevon
@jabis
not many requirements
const fs = require('fs');
const tape = require('tape');
const _test = require('tape-promise').default // <---- notice 'default'
const test = _test(tape) // decorate tape
const Gun = require('../gun')
const SEA = require('../gun/sea')
require('../gun/lib/then.js')
require('../gun/lib/promise.js')
const RAD = require('../gun/lib/radisk.js')
const mkdirp = require('mkdirp');
const { Random } = require('random-js');
const random = new Random();
const _ = require('lodash');
const sleep = (milliseconds) => {
  return new Promise(resolve => setTimeout(resolve, milliseconds))
}
Gun.log.once=function(...args){ console.log(...args)}
tape tape-promise random-js mkdirp and lodash
tho I'm not really sure all of those are even required, maybe they were - long ass time since I used it since now :D