如何向 GUN 中的 PUT 请求添加属性?

how to add attributes to a PUT request in GUN?

我的 HTML 页面中有以下代码

    Gun.on('opt', function (ctx) {
        if (ctx.once) {
            return
        }
        this.to.next(ctx)
        window.auth = ctx.opt.auth
        ctx.on('get', function (msg) {
            msg.auth = window.auth
            this.to.next(msg)
        })
        ctx.on('put', function (msg) {
            msg.put.auth = window.auth
            this.to.next(msg)
        })
    })

    var gun = Gun({
        peers: ['http://localhost:8765/gun'],
        auth: {
            user: 'mroon',
            password: 'titi'
        }
    })

在服务器上,我只是看请求

Gun.on('create', function(db) {
    console.log('gun created')
    this.to.next(db);

    db.on('get', function(request) {
        // this request contains the auth attribute from the client
        this.to.next(request);
    });
    db.on('put', function(request) {
        // this request does not contain the auth attribute from the client
        this.to.next(request);
    });
});

每次我使用 gun.get('someAttribute') 查询图表时,服务器上的请求都包含 auth 属性。

但是当调用gun.get('someAttribute').put({attribute: 'my new value'})时,服务器上的请求不包含auth属性。

如何将 auth 属性添加到 put 请求中,以便所有对等方也能获得它?

@micha-roon 你直接跳到了 GUN 的 core/internal 电线细节,这不是最容易开始的事情,但这是我所做的,我猜这就是你正在寻找的东西:

(如果没有,请发表评论,我会更新)

它的作用是为 GUN 中的所有出站消息添加一个 DEBUG 标志,您可以更改它以添加其他元数据或信息

Gun.on('opt', function(root){
  if(!root.once){
    root.on('out', function(msg){
      msg.DBG = msg.DBG || +new Date;
      this.to.next(msg);
    });
  }
  this.to.next(root);
})

还有一个很好的参考:https://github.com/zrrrzzt/bullet-catcher