diff --git a/lib/db/level.js b/lib/db/level.js index 9c6a691f..3a93b6c2 100644 --- a/lib/db/level.js +++ b/lib/db/level.js @@ -105,11 +105,18 @@ function Iterator(db, options) { options.keyAsBuffer = false; this.db = db; this.iter = db.level.iterator(options); + this._end = false; } Iterator.prototype.next = function(callback) { var self = this; this.iter.next(function(err, key, value) { + // Hack for level-js: it doesn't actually + // end iterators -- it keeps streaming keys + // and values. + if (self._end) + return; + if (err) { callback(err); return; @@ -137,6 +144,7 @@ Iterator.prototype.seek = function seek(key) { }; Iterator.prototype.end = function end(callback) { + this._end = true; this.iter.end(callback); };