如何将levelDB读取流转换为sync方法

时间:2018-06-14 19:39:21

标签: javascript node.js asynchronous synchronization leveldb

let temp = [];

db.createReadStream({ keys: true, values: false })
  .on('data', data => {

   temp.push(data);

  })
console.log(temp);

我试图从LevelDB数据库中迭代出每个键并将数据发送回客户端,但createReadStream方法是异步的 所以客户端响应代码在它完成迭代数据库之前就被激活了,我想知道是否有任何方法可以将它变成同步函数并且只有在所有内容都完成后才会激活响应。

1 个答案:

答案 0 :(得分:0)

代码正在等待流完成,然后再将其发送回客户端。

import level from 'level'

const db = level('db', { valueEncoding: 'json' })

export async function CreateReadStream (option = {}) {
  let array = []
  try {    
    const readStream = db.createReadStream(option)
    for await (const data of readStream) {
      array.push(data)
    }

    return array
  } catch (error) {
    console.error(error)
  }
}