# Очистка PersistentStorage

**URL:** <https://support.wirenboard.com/t/ochistka-persistentstorage/25107>\
**Category:** Без категории\
**Created:** [February 15, 2025, 4:29am UTC](https://support.wirenboard.com/t/ochistka-persistentstorage/25107 "2025-02-15T04:29:40Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![alexale79](https://avatars.discourse-cdn.com/v2/letter/a/8c91f0/32.png) [@alexale79](https://support.wirenboard.com/u/alexale79)\
**Post date:** [February 15, 2025, 4:29am UTC](https://support.wirenboard.com/t/ochistka-persistentstorage/25107/1 "2025-02-15T04:29:40Z")

</div>

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

Написал код:

```auto
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 его не отображает. Как быть?

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

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

```

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

---

<div class="post-metadata">

**Author:** ![Al-x](https://avatars.discourse-cdn.com/v2/letter/a/cdc98d/32.png) [@Al-x](https://support.wirenboard.com/u/Al-x)\
**Post date:** [February 15, 2025, 6:47am UTC](https://support.wirenboard.com/t/ochistka-persistentstorage/25107/2 "2025-02-15T06:47:55Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [February 17, 2025, 4:12pm UTC](https://support.wirenboard.com/t/ochistka-persistentstorage/25107/4 "2025-02-17T16:12:18Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![pillbox](https://avatars.discourse-cdn.com/v2/letter/p/f07891/32.png) [@pillbox](https://support.wirenboard.com/u/pillbox)\
**Post date:** [February 28, 2025, 10:24am UTC](https://support.wirenboard.com/t/ochistka-persistentstorage/25107/6 "2025-02-28T10:24:49Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [February 28, 2025, 11:32am UTC](https://support.wirenboard.com/t/ochistka-persistentstorage/25107/7 "2025-02-28T11:32:54Z")

</div>

> [@pillbox](#):
>
> Как программно очистить значение в persistent storage?

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

---

<div class="post-metadata">

**Author:** ![pillbox](https://avatars.discourse-cdn.com/v2/letter/p/f07891/32.png) [@pillbox](https://support.wirenboard.com/u/pillbox)\
**Post date:** [March 3, 2025, 1:44pm UTC](https://support.wirenboard.com/t/ochistka-persistentstorage/25107/8 "2025-03-03T13:44:22Z")

</div>

хотел наличие значения в 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 и сравнением типа получаемого значения.

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

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [March 3, 2025, 2:55pm UTC](https://support.wirenboard.com/t/ochistka-persistentstorage/25107/9 "2025-03-03T14:55:42Z")

</div>

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