На `data` или` error` никогда не срабатывает на уровне createKeyStream - PullRequest
0 голосов
/ 30 июня 2018

У меня есть следующий код для возврата всех ключей в базе данных уровня в приложении Node.js, это метод в классе 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 data или on error никогда не срабатывает? Я новичок в использовании уровня, поэтому любая помощь будет признательна.

1 Ответ

0 голосов
/ 30 июня 2018

Это решит проблему; Я просто понимаю, что мне нужно дождаться закрытия потока:

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);
                })
           }
       }
...