我想澄清我对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);
}
});
答案 0 :(得分:0)
我相信.unset
墓碑(null
)是表中的一项,但不是表本身。只是让其他人知道:.unset
是由GUN仓库维护的社区,而不是由我维护的社区-因此我可能对它的行为有误,或者扩展名可能已过时。
Gun.obj.empty({})
只是用来检查对象是否为空的实用程序。第二个参数使您可以将其传递给要忽略的属性(例如'_'
,JS实现中每个GUN节点都将其置于该属性上。)
您是正确的,gun.get('list').put(null)
应该“清除”列表,以便当您再次将数据保存到列表中时(或调用.set(item)
添加项),这将迫使/导致GUN生成新列表/表格/集合/集合。
它“复活”旧列表是错误的行为(除非另一个对等方试图同时在同一父上下文中重写到旧列表),因此应将其视为需要解决的错误等待修复。 (可能是由于旧的列表ID被缓存并且没有从内存中正确清除)