"map" 到 return 一个节点多次是预期的行为吗? (即重复)
Is it expected behaviour for "map" to return a node multiple times? (i.e. duplicates)
我正在尝试在服务器端呈现 (SSR) 上下文中使用 gun
,并注意到我开始在 map
回调中收到重复项。重复计数为 n,其中 n 是我刷新页面的次数。
我四处搜寻了一下,发现我正在为对服务器的每个请求生成一个 gun
实例。所以基本上每个请求都会创建一个新的对等点,因此 map
会为网络中的每个 peer
返回每个节点的副本。
这是预期的行为吗?
是的,默认情况下 gun 是 peer-to-peer (P2P),这意味着每个点(甚至是通过其他点连接的点)都会尝试回复请求。
为什么?如果您不是 运行 中央服务器(您可以使用 gun,但您也不必这样做),则无法保证如果 1 个对等回复他们拥有您想要的最新或全部数据.
但是,您是对的,没有必要为每个服务器请求创建一个新的枪支数据库实例...。这是否回答了问题?
另请注意: map
订阅了 table 和其中的项目(添加时)。这意味着将为 table/list 中的每个项目调用地图(因为它们甚至在将来添加),并且当一个项目更新时,它将再次为该项目调用。
如果您只想获取每个项目一次,请执行 map().val(cb)
但是对于添加的新项目仍会调用此方法。只是每个项目,只有一次。
我正在尝试在服务器端呈现 (SSR) 上下文中使用 gun
,并注意到我开始在 map
回调中收到重复项。重复计数为 n,其中 n 是我刷新页面的次数。
我四处搜寻了一下,发现我正在为对服务器的每个请求生成一个 gun
实例。所以基本上每个请求都会创建一个新的对等点,因此 map
会为网络中的每个 peer
返回每个节点的副本。
这是预期的行为吗?
是的,默认情况下 gun 是 peer-to-peer (P2P),这意味着每个点(甚至是通过其他点连接的点)都会尝试回复请求。
为什么?如果您不是 运行 中央服务器(您可以使用 gun,但您也不必这样做),则无法保证如果 1 个对等回复他们拥有您想要的最新或全部数据.
但是,您是对的,没有必要为每个服务器请求创建一个新的枪支数据库实例...。这是否回答了问题?
另请注意: map
订阅了 table 和其中的项目(添加时)。这意味着将为 table/list 中的每个项目调用地图(因为它们甚至在将来添加),并且当一个项目更新时,它将再次为该项目调用。
如果您只想获取每个项目一次,请执行 map().val(cb)
但是对于添加的新项目仍会调用此方法。只是每个项目,只有一次。