0

( Gun.version 0.9.6 )

给定以下数据结构

{
    lights:{
        1:{
            state:{
                on:true,
                color:'red',
                br:254
            }
        },
        2:{
            state:{
                on:true,
                color:'red',
                br:254
            }
        },
        3:{
            state:{
                on:true,
                color:'red',
                br:254
            }
        }
    }
}    

我想同时开/关灯。 gun.get('lights').val(cb)确实给了我 {1:{...},2:{...},3:{...}} 并且gun.get('lights').path('1.state.on').put(false);效果很好。

我认为这样做gun.get('lights').map().path('1.state.on').put(false)会“映射”所有灯光,但它只会改变第一盏灯。

问题:如何打开/关闭所有灯?

4

2 回答 2

0

@stef-de-vries,您在 gun 的源代码中发现了一个重要的 TODO 错误!

目前 (v0.9.6),put不适用于map()命令。我认为它只选择第一项(可能是随机的)然后将其关闭。

这很糟糕,需要解决。

目前,解决方法可能是执行以下操作:

gun.get('lights').map().path('state.on').val(function(){
  this.put(false);
});

这是丑陋的。

于 2018-01-05T00:12:10.857 回答
0

嗯..好吧,但gun.get('lights').map().val(cb) 如果我第二次运行它也会失败。

解决了我的each()模块问题

gun.get('lights').each(node=>{
          gun.get(node._['#']).path('state.on').put(true)
        })
于 2018-01-05T00:22:16.130 回答