获取非连续值的列表

时间:2014-03-26 13:34:51

标签: node.js

在LevelUP中,您可以通过执行

返回单个值
db.get('foo', function (err, value) {
  // .. handle `value` here
})

想象一下,你有一组任意长的非连续键:

var lotsOfKeys = ['skajhda', 'asdasdsasd', 'sfsfsdfsdf', 'dssdfdsf'];

如果db.get是异步的,并且lotsOfKeys的长度为1到n,那么从leveldb数据库返回相应的值列表的最佳方法是什么?

是否有一些聪明的方法来链接.gets以返回列表lotsOfKeys中包含的键的值?

1 个答案:

答案 0 :(得分:1)

目前,处理此问题的最佳方法是使用异步帮助程序库。以下是使用map-limit

的示例
var map = require('map-limit')
var keys = [
  'skajhda',
  'asdasdsasd',
  'sfsfsdfsdf',
  'dssdfdsf'
]

// limits to batches of 20 db.gets
map(keys, 20, function(key, next) {
  db.get(key, next)
}, function(err, results) {
  if (err) throw err

  results = keys.reduce(function(memo, key) {
    memo[key] = results[key]
    return memo
  }, {})

  results['skajhda']    // the result of db.get(keys[0])
  results['asdasdsasd'] // the result of db.get(keys[1])
})