如何隔离 Gunjs 数据库?

How to isolate a Gunjs database?

我已经试用 GunJs 几天了,我真的很喜欢它。作为一个入门项目,我遵循了 Fireship chat dapp video 旨在建立您自己的聊天。

问题来了,既然我已经完成了本教程,我想创建自己的聊天室。但是,出于某种原因,如果我在自己的应用程序中获得一个 'chat' 节点,它似乎会在与教程 online.

相同的 'chat' 节点上拾取
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]
            }
        }
    })
})

如果我更改加密密钥(然后消息就变成未定义的),情况也是如此。由此产生多个问题:

即使我已经阅读了大部分文档,但在理解图表通常如何在应用程序之间分离时,我似乎还缺少一些东西。任何有关其工作原理的见解都将不胜感激。

Are graph node names unique within the whole of GunDb?

是的。

How do you handle conflicts where two gun-based apps call on the same node name?

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

Is this problem generally solved through filtering using 'header' props?

我认为这不是正确的做法。

How do I make it pick up on only my data?

使用您自己的中继服务器。

结论: gunDB 并不真正关心谁获取/放置数据。如果您想保护您的数据,请使用您自己的中继服务器(不是 public 的中继服务器),并将数据放在您的用户 space 中。用户 space 对 public 是只读的,但对所有者 read/write 是只读的。