阐明未设置的行为

时间:2018-08-21 22:07:05

标签: gun

我想澄清我对unset()或我正在观察的行为的理解。我知道如果我调用unset(),它将用一个空值替换该值(根据Gun中的删除数据)。因此,假设您已调用unset(),这就是我要确认的内容:

1)调用一次()或on()时,对于已取消设置()的节点,其返回null。

2)调用Gun.obj.empty(table,'_')时,它返回false

我还尝试将set的值设置为null,例如

get('mylist').put(null)

哪个工作了!我想清空我的布景。但是,下次我添加一个新节点时,我的原始集以及所有原始节点都已还原。我最终写了以下内容清空我的设备

this.context.once().map().once(data => {
    let key = data["_"]["#"];

    let node = this.context.get(key);
    if (node) {
        this.context.unset(node);
    }
});

1 个答案:

答案 0 :(得分:0)

我相信.unset墓碑(null)是表中的一项,但不是表本身。只是让其他人知道:.unset是由GUN仓库维护的社区,而不是由我维护的社区-因此我可能对它的行为有误,或者扩展名可能已过时。

Gun.obj.empty({})只是用来检查对象是否为空的实用程序。第二个参数使您可以将其传递给要忽略的属性(例如'_',JS实现中每个GUN节点都将其置于该属性上。)

您是正确的gun.get('list').put(null)应该“清除”列表,以便当您再次将数据保存到列表中时(或调用.set(item)添加项),这将迫使/导致GUN生成列表/表格/集合/集合。

它“复活”旧列表是错误的行为(除非另一个对等方试图同时在同一父上下文中重写到旧列表),因此应将其视为需要解决的错误等待修复。 (可能是由于旧的列表ID被缓存并且没有从内存中正确清除)