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 его не отображает. Как быть?
При чем даже прямое удаление по ключу не дает результата:
Я точно не подскажу, но на форуме было указание, в какой папке они хранятся. Их можно удалить как файлы с диска. На практике же в самом скрипте их проще обнулить. А процедуры с объектами применяются непосредственно к самим переменным, а не к файловому хранилищу.
хотел наличие значения в 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 и сравнением типа получаемого значения.
Ну и хотел чистить, чтоб мусор, так сказать, не оставался разный ненужный )