diff --git a/src/database/level/hash.js b/src/database/level/hash.js index f4980483aa..360d37d015 100644 --- a/src/database/level/hash.js +++ b/src/database/level/hash.js @@ -82,16 +82,7 @@ module.exports = function(db, module) { }; module.getObjectsFields = function(keys, fields, callback) { - var arr = []; - - async.each(keys, function(key, next) { - module.getObjectFields(key, fields, function(err, obj) { - arr.push(obj); - next(); - }); - }, function(err) { - callback(err, arr); - }); + module.iterator('getObjectFields', keys, fields, callback); }; module.getObjectKeys = function(key, callback) { diff --git a/src/database/level/main.js b/src/database/level/main.js index 698c84b9ad..2db5723b5e 100644 --- a/src/database/level/main.js +++ b/src/database/level/main.js @@ -1,6 +1,7 @@ "use strict"; -var nconf = require('nconf'); +var nconf = require('nconf'), + async = require('async'); module.exports = function(db, module) { module.close = function(callback) { @@ -32,8 +33,6 @@ module.exports = function(db, module) { // v v }; - // key - module.exists = function(key, callback) { db.get(key, function(err, value) { callback(null, !!value); @@ -79,5 +78,18 @@ module.exports = function(db, module) { // <__< }; + module.iterator = function(fn, keys, value, callback) { + var results = []; + + async.each(keys, function(key, next) { + module.isSetMember(key, value, function(err, result) { + results.push(result); + next(); + }); + }, function(err) { + callback(err, results); + }); + }; + return module; }; \ No newline at end of file diff --git a/src/database/level/sets.js b/src/database/level/sets.js index 131d84b73f..0c0ef366bb 100644 --- a/src/database/level/sets.js +++ b/src/database/level/sets.js @@ -40,17 +40,7 @@ module.exports = function(db, module) { }; module.isMemberOfSets = function(sets, value, callback) { - // can be improved - var members = []; - - async.each(sets, function(set, next) { - module.isSetMember(set, value, function(err, isMember) { - members.push(value); - next(); - }); - }, function(err) { - callback(err, members); - }); + module.iterator('isSetMember', sets, value, callback); }; module.getSetMembers = function(key, callback) {