首页 > 解决方案 > 当数据找到条件时停止可读流

问题描述

我有一个 csv 缓冲区,我要发送到一个函数。在缓冲区中,我得到了以下数据:

name,age
tom,33
pal,22
tim,60
jon,12

我使用一个节点stream将它通过管道传递给一个对象,csv-parser并且我想看看条件是否满足,如果我们发现tim谁的年龄已经超过 59 我希望它停止,所以永远不会读取 jon,我想要这个函数返回一个字符串。

import { Readable } from 'stream'
import csv from 'csv-parser'

export default async function (buffer) {
  Readable.from(buffer)
    .pipe(csv())
    .on('data', (data) => {
      if (data.age > 59)
       return 'stop'
    })
}

这只适用于我将它推送到一个数组,读取整个文件,然后最后我返回一些东西。

我试过createReadStream但不能使用缓冲区,我得到了错误ENAMETOOLONG:,使用流它运行良好但无法停止on.('data')

标签: node.jsnode-streamscsv-parser

解决方案


推荐阅读