TransWikia.com

В чем можно хранить данные в приложении Electron?

Stack Overflow на русском Asked by Aynur Sibagatullin on December 4, 2020

Мне нужно быстро сохранять и получать данные из хранилища. На данный момент я хочу использовать electron-json-storage.

Вот так на данный момент выглядит функция возврата значения по ключу:

get: function(key) {
    var value;
    var done = false;
    storage.get(key, function(error, data) {
        if (error) {
            console.log("Get.Err. "+key+" : "+error);
        }
        console.log("Get "+key+" : "+data.Key+" - "+data.Key.pubKey);
        value = data.Key;
        done = true;
    });
    //require('deasync').loopWhile(function(){return !done;});
    return value;
}

Однако из-за того, что результат не возвращается напрямую, функция get возвращает undefined.

Я хотел использовать модуль deasync, но тогда выскакивает ошибка как тут. Я думал об использовании electron-config, только там я не смог сохранить и получить обратно ArrayBuffer.

Что делать? Может использовать локальную БД?

Обновление

Возвращать Promise или принимать колбеки я не могу, поскольку эта функция возвращает значение модулю, который я изменить не могу.

Обновление №2

Я пытался использовать deasync. При использовании выскакивает такая ошибка:

Uncaught Error: Could not locate the bindings file. Tried:
 → C:pathsrcnode_modulesdeasyncbuilddeasync.node
 → C:pathsrcnode_modulesdeasyncbuildDebugdeasync.node
 → C:pathsrcnode_modulesdeasyncbuildReleasedeasync.node
 → C:pathsrcnode_modulesdeasyncoutDebugdeasync.node
 → C:pathsrcnode_modulesdeasyncDebugdeasync.node
 → C:pathsrcnode_modulesdeasyncoutReleasedeasync.node
 → C:pathsrcnode_modulesdeasyncReleasedeasync.node
 → C:pathsrcnode_modulesdeasyncbuilddefaultdeasync.node
 → C:pathsrcnode_modulesdeasynccompiled6.5.0win32x64deasync.node

Способ исправления этого я не нашел.

One Answer

Делай так

// Зависимость deasync
const deasync = require('deasync');

// ....

get: function(key) {
    var value;

    storage.get(key, function(error, data) {
        if (error) {
            console.log("Get.Err. "+key+" : "+error);
        }
        console.log("Get "+key+" : "+data.Key+" - "+data.Key.pubKey);

        value = data.Key;
    });

    // Держим код на месте, пока не получена переменная
    while(value === undefined)
        deasync.runLoopOnce();

    return value;
}

Answered by Unknown User on December 4, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP