Level / level

Universal abstract-level database for Node.js and browsers.
MIT License
1.55k stars 106 forks source link

Permanence isn't working for me :( #165

Closed hieyou1 closed 4 years ago

hieyou1 commented 4 years ago

Hi everyone, Thanks for reading to my issue in advance! When I boot up two LevelDBs in a Node.js file and wait for them to open using a callback, my db.supports doesn't include permanence. Is there something I can do to forcibly make it permanent? After all, my database is a user account database, and it can't be stored in RAM.

hieyou1 commented 4 years ago

This is my init.js:

const sleep = (time) => { // await sleep(time in s), basically python sleep but async
    return new Promise((resolve, reject) => {
        try {
            setTimeout(resolve, time * 1000);
        } catch (err) {
            reject(err);
        }
    });
};
const main = async () => {
    console.log("Starting up...");
    const level = require("level");
    const index = require("./index.js");
    var loaded = 0;
    var dbs = {};
    await sleep(5);
    level('server/ldb', {}, (err, db) => {
        if (err) throw err;
        if (!db.supports.permanence) {
            console.log(db.supports);
            throw new Error("Permanence required");
        }
        dbs.db = db;
        loaded++;
        if (loaded == 2) index(dbs.db, dbs.cldb);
    });
    await sleep(5);
    level("server/cldb", {}, (err, db) => {
        if (err) throw err;
        if (!db.supports.permanence) {
            console.log(db.supports);
            throw new Error("Permanence required");
        }
        dbs.cldb = db;
        loaded++;
        if (loaded == 2) index(dbs.db, dbs.cldb);
    });
};
main();
austinfrey commented 4 years ago

@hieyou1 when using the level package you should not need to check for permanence since the default behavior is to persist data to disk. I'm not sure why the check isn't working though, it looks like it was added here: https://github.com/Level/leveldown/blob/4ad16de14eedc17c2d59ec5a9848a3e2a65a032f/leveldown.js#L19

vweevers commented 4 years ago

@hieyou1 Which version of level do you have? You need v6.

hieyou1 commented 4 years ago

@vweevers That's the problem-- was using 5.0.1. npm i level gave me v5.0.1, npm i level@latest gave me v6.0.0. Thanks!!!