Очистка PersistentStorage

Как правильно очистить хранилище?

Написал код:

var ps = new PersistentStorage("power-history", { global: true });

for (var key in ps) {
    if (key !== "_psself") { // Исключаем служебные данные
        debug(key + ' deleted')
        delete ps[key]; // Удаляем ключ
    }
}

debug("PersistentStorage очищено!")

Потом оказалось, что ключи так нельзя перебирать. Проверил это выведя debug(ps[“day_energy_total”],Object.keys(ps)), ответ был: 16.89341000000013 name,_psself

То есть ключ day_energy_total есть, но Object.keys его не отображает. Как быть?

При чем даже прямое удаление по ключу не дает результата:

delete ps["day_energy_total"]
debug(JSON.stringify(ps["day_energy_total"]))

И где храняться данные на диске? по какому пути?

Я точно не подскажу, но на форуме было указание, в какой папке они хранятся. Их можно удалить как файлы с диска. На практике же в самом скрипте их проще обнулить. А процедуры с объектами применяются непосредственно к самим переменным, а не к файловому хранилищу.

Добрый день.
База расположена /var/lib/wirenboard/wbrules-persistent.db
Для удаления - достаточно удалить файл при остановленной службе wb-rules.

Добрый день.
Ответьте пожалуйста на 1-ю часть вопроса.
Как программно очистить значение в persistent storage?
Спасибо

Программная очистка - не предусмотрена. А зачем она нужна, в какой ситуации может пригодиться?

хотел наличие значения в storage использовать в качестве условия восстановления значения в топике.

попутно столкнулся с тем, что:

такая конструкция
var ps_Mask = new PersistentStorage(“MASK”, { global: true });
var test = null;
ps_Mask[“test”] = test;
log(String(ps_Mask[“test”]));

вызывает ошибку на строчке ps_Mask[“test”] = test;
ERROR: [rule error] ECMAScript error: TypeError: invalid base value
duk_hobject_props.c:2000
anon /usr/share/wb-rules-system/scripts/lib.js:852 preventsyield
anon /etc/wb-rules/Scenes_Light.js:189 preventsyield

а вот если сделать var test = undefined, то рушится wb-rules
fatal error: exitsyscall: syscall frame is no longer valid

Обошел это присвоением пустой строки “” , вместо boolean и сравнением типа получаемого значения.

Ну и хотел чистить, чтоб мусор, так сказать, не оставался разный ненужный )

Благодарю, воспроизвел. Оформил багой, перезапуск сервиса - это явно неожиданное поведение.