Я пытаюсь приложение 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 является асинхронной операцией.
Как правильно узнать длину, когда я хочу?