Что делает текущий `map()`?
( 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)
он будет "отображать" все источники света, но вместо этого он меняет только первый источник света.
Вопрос: Как мне включить / выключить все огни?
2 ответа
Хм.. хорошо, но это не удается gun.get('lights').map().val(cb)
также, если я запускаю его во второй раз.
Решил мою проблему с each()
модуль
gun.get('lights').each(node=>{
gun.get(node._['#']).path('state.on').put(true)
})
@stef-de-vries, вы заметили важную ошибку TODO в исходном коде оружия!
В настоящее время (v0.9.6), put
не работает с map()
команды. Я думаю, что он выбирает только первый элемент (который может быть случайным), а затем отключает его.
Это плохо и требует решения.
На данный момент, обходной путь, вероятно, сделать что-то вроде:
gun.get('lights').map().path('state.on').val(function(){
this.put(false);
});
Что некрасиво.