阐明 unset 的行为
Clarifying behavior of unset
我想阐明我对 unset() 或我观察到的行为的理解。我知道如果我调用 unset() 它会将值替换为 null(根据 Gun 中的删除数据)。所以这就是我想确认的,假设你调用了 unset():
1) 当您调用 once() 或 on() 时,它 returns 对于已取消设置的节点为 null()
2) 当你调用 Gun.obj.empty(table, '_') 它 returns false
我还尝试将我的集合的值设置为空,例如
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);
}
});
我相信 .unset
墓碑 (null
) 是 table 中的一个项目,而不是 table 本身。只是让其他人知道:.unset
是社区在 GUN 存储库中维护的,而不是由我维护的——所以我可能对其行为有误,或者扩展可能已过时。
Gun.obj.empty({})
只是一个检查对象是否为空的工具。第二个参数让你传递给它一个 属性 来忽略(就像在 JS 实现中每个 GUN 节点都有的 '_'
)。
你是对的 不过,gun.get('list').put(null)
应该 "clear out" 列表,这样当你再次将数据保存到它时(或调用 .set(item)
添加一个项目)这应该 force/cause GUN 生成 new list/table/set/collection.
它 "resurrect" 旧列表的行为是错误的(除非另一个对等方试图同时在同一父上下文中重新写入旧列表),因此应该考虑这一点一个需要修复的错误。 (可能是因为旧的列表 ID 被缓存而没有从内存中正确清除)
我想阐明我对 unset() 或我观察到的行为的理解。我知道如果我调用 unset() 它会将值替换为 null(根据 Gun 中的删除数据)。所以这就是我想确认的,假设你调用了 unset():
1) 当您调用 once() 或 on() 时,它 returns 对于已取消设置的节点为 null()
2) 当你调用 Gun.obj.empty(table, '_') 它 returns false
我还尝试将我的集合的值设置为空,例如
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);
}
});
我相信 .unset
墓碑 (null
) 是 table 中的一个项目,而不是 table 本身。只是让其他人知道:.unset
是社区在 GUN 存储库中维护的,而不是由我维护的——所以我可能对其行为有误,或者扩展可能已过时。
Gun.obj.empty({})
只是一个检查对象是否为空的工具。第二个参数让你传递给它一个 属性 来忽略(就像在 JS 实现中每个 GUN 节点都有的 '_'
)。
你是对的 不过,gun.get('list').put(null)
应该 "clear out" 列表,这样当你再次将数据保存到它时(或调用 .set(item)
添加一个项目)这应该 force/cause GUN 生成 new list/table/set/collection.
它 "resurrect" 旧列表的行为是错误的(除非另一个对等方试图同时在同一父上下文中重新写入旧列表),因此应该考虑这一点一个需要修复的错误。 (可能是因为旧的列表 ID 被缓存而没有从内存中正确清除)