javascript - 通过同步迭代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() 是异步操作。
当我想要知道长度的正确方法是什么?
解决方案
推荐阅读
- curry - 在 Curry 中,如何让逆向函数终止?
- javascript - 如何以一键形式发送事件
- flutter - 如何在音频库中检查音频是否完成?
- javascript - 在 for 循环中等待直到回调完成
- webpack - webpack 模块规则配置中的 `test`、`include`、`resource` 属性有什么区别?
- vue.js - vue js中的动态查询字符串名称
- javascript - 如何使用 JavaScipt 获取重定向链接?
- javascript - 在 promise.then 或 promise.catch 中调用时,Array.push 的工作很奇怪
- kubernetes - Pod 无法连接到 kube dns
- python - Python函数将字符串附加到具有变量名的列表中