如何隔离Gunjs数据库?



我已经尝试GunJs好几天了,我真的很喜欢它。作为一个启动项目,我遵循了Fireship聊天dapp视频,旨在构建自己的聊天。

问题是,现在我已经完成了教程,我想创建我自己的聊天。然而,由于某种原因,如果我在自己的应用程序中获得一个"聊天"节点,它似乎与在线教程中的"聊天"节点相同。

onMount(() => {
// Get Messages in large chat
db.get('chat')
.map()
.once(async (data, id) => {
if (data) {
// key for E2E - to do: change for web3
const key = '#foo';
var message = {
//transform the data
who: await db.user(data).get('alias'),
what: (await SEA.decrypt(data.what, key)) + '',
when: GUN.state.is(data, 'what'), 
};
if (message.what) {
messages = [...messages.slice(-100), message]
}
}
})
})

如果我更改加密密钥也是这种情况(那么消息就变得未定义)。由此产生了多个问题:

  • 图形节点名称在整个GunDb中是唯一的吗?
  • 你如何处理两个基于枪的应用调用相同节点名称的冲突?
  • 这个问题通常通过使用'header'道具过滤来解决吗?
  • 我如何使它只拾取我的数据?

即使我已经阅读了大部分的文档,似乎有一些东西我在我的理解是如何在应用程序之间的图形通常是分开的。任何关于这是如何工作的见解将不胜感激。

图形节点名称在整个GunDb中是唯一的吗?

是的。

如何处理两个基于gun的应用调用相同节点名称的冲突?

你不。预期的结果是,它们将相互覆盖。

这个问题通常通过使用'header'道具过滤来解决吗?

我认为这样做不对。

我如何使它只拾取我的数据?

使用你自己的中继服务器

结论:gunDB并不关心谁获取/放置数据。如果您想保护您的数据,请使用您自己的中继服务器(而不是公共服务器),并将数据放在您的用户空间中。用户空间对公众是只读的,但对所有者是读写的。

最新更新