首页 > 解决方案 > 通过同步迭代DB获取levelDB长度/大小

问题描述

我正在尝试使用 levelDB 的 node.js 应用程序。假设我在数据库中的条目很少,并且需要先查询它的大小,然后才能做某事。我将 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() 立即返回,因为 getDBLength 中的 db.createReadStream() 是异步操作。

当我想要知道长度的正确方法是什么?

标签: javascriptasynchronousasync.jsleveldb

解决方案


推荐阅读