Получите длину / размер levelDB через итерацию БД в синхронном режиме - PullRequest
0 голосов
/ 20 октября 2018

Я пытаюсь приложение node.js с levelDB.Предположим, у меня есть несколько записей в БД, и мне нужно запросить его размер, прежде чем я смогу что-то сделать. Я реализовал функцию getDBLength () как:

function getDBLength() {
        let i = 0;
        console.log('aaaa');
        db.createReadStream().on('data', function(data) {
            console.log('bbbb');
            i++;
        }).on('error', function(err) {
            return console.log('Unable to read data stream!', err)
        }).on('close', function() {
            console.log('returning length as: ' + i);
            return i-1;
        });
    }

Вывод при вызове этой функции из приглашения nodejs:

console.log( 'Length: ' + getDBLength());

aaaa
Length: undefined
bbbb
returning length as: 1

getDBLength () немедленно возвращается, поскольку db.createReadStream () внутри getDBLength является асинхронной операцией.

Как правильно узнать длину, когда я хочу?

...