永远不会在createKeyStream级别上触发on数据或error。

时间:2018-06-30 19:28:09

标签: leveldb

我有以下代码来返回Node.js应用程序中级别DB中的所有键,这是ES6类中的一种方法:

   class LevelDB {

        constructor() {
            this.db = level(chainDB);
        }

        getAllItems() {
            let self = this;
            return new Promise(function(resolve, reject){
               self.db.createKeyStream()
                 .on('data', function (data) {
                    resolve(data);
                 })
                 .on('error', function (err) {
                    reject(err)
              });
          }
   }

数据库创建成功。 我注意到on dataon error从未被解雇吗?我的使用水平是新的,因此将不胜感激。

1 个答案:

答案 0 :(得分:0)

这可以解决问题; 我只是意识到我需要等待Stream关闭:

class LevelDB {

        constructor() {
            this.db = level(chainDB);
        }

        getAllItems() {
            let self = this;
            let dataArray = [];
            return new Promise(function(resolve, reject){
             self.db.createKeyStream()
               .on('data', function (data) {
                  dataArray.push(data);
                })
               .on('error', function (err) {
                  reject(err)
                })
               .on('close', function () {
                  resolve(dataArray);
                })
           }
       }