Fre*_*roo 6 javascript gun gundb
我已经尝试 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]
}
}
})
})
Run Code Online (Sandbox Code Playgroud)
如果我更改加密密钥,情况也会如此(然后消息将变得未定义)。由此产生多个问题:
即使我已经阅读了大部分文档,但在理解应用程序之间的图表通常如何分离时,我似乎仍然缺少一些东西。任何有关其工作原理的见解将不胜感激。
图节点名称在整个 GunDb 中是否唯一?
是的。
当两个基于枪的应用程序调用同一节点名称时,如何处理冲突?
你不知道。预期的结果是,它们会互相覆盖。
这个问题通常是通过使用 'header' 属性进行过滤来解决的吗?
我认为这不是正确的做法。
如何让它只接收我的数据?
使用您自己的中继服务器。
结论:gunDB 并不真正关心谁获取/放置数据。如果你想保护你的数据,请使用你自己的中继服务器(不是公共的),并将数据放在你的用户空间中。用户空间对公众来说是只读的,但对所有者来说是读/写的。