Что делает текущий `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);
});

Что некрасиво.

Другие вопросы по тегам