(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)
,它会映射'在所有灯光上,但它只改变了第一盏灯。
问题:如何打开/关闭所有灯?
答案 0 :(得分:0)
@ stef-de-vries,你在枪的源代码中发现了一个重要的TODO错误!
目前(v0.9.6),put
不适用于map()
命令。我认为它只选择第一项(可能是随机的),然后将其关闭。
这很糟糕,需要加以解决。
目前,解决方法可能是:
gun.get('lights').map().path('state.on').val(function(){
this.put(false);
});
哪个很难看。
答案 1 :(得分:0)
嗯......好吧,但是如果我第二次运行它,gun.get('lights').map().val(cb)
就失败了。
使用each()
模块解决了我的问题
gun.get('lights').each(node=>{
gun.get(node._['#']).path('state.on').put(true)
})