首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >停止读取fast-csv节点模块的流

停止读取fast-csv节点模块的流
EN

Stack Overflow用户
提问于 2016-08-04 20:05:32
回答 1查看 2.5K关注 0票数 1

如何使用fast-csv节点模块停止读取某些特定索引处的csv行?在fast-csv中,它们是用于流暂停和恢复选项,但没有用于在某些特定行处关闭流的选项。代码如下:

代码语言:javascript
复制
var csvstream = CSV
.fromPath(self.fetchFilePath(fileName),{ ltrim : true, rtrim : true , headers : true , ignoreEmpty : true })
.transform(function (data){
    Object.keys(data).forEach(function (key) {
       var newKey       = key.trim();
       data[newKey]     = data[key].trim();
    });
    return data;
})
.on("data", function(data){
     //checking unicode char presence
     Object.keys(data).forEach(function (key) {
       if(data[key]){
          var charValue   = PUNYCODE.ucs2.decode(data[key]);
          charValue = charValue.map(function(val) {
             if(val>126){
               FileCleanFlag=false;
               errorData.push(data);
             }
          });
       }else{
          FileCleanFlag=false;
       }
     });

     if(!FileCleanFlag){
        #here want to jump to end block instead of parsing next rows
     }
})
.on('end', function (){
    #some work on rows containing error
});

在上面的代码中,如果某一行发生错误,我如何跳转到"end“块?

EN

回答 1

Stack Overflow用户

发布于 2016-08-06 02:30:27

没有很好的方法来结束流。您可以只将FileCleanFlag定义为true,如果它为false,则不再执行任何操作。

代码语言:javascript
复制
var FileCleanFlag = true;
var csvstream = CSV
.fromPath(self.fetchFilePath(fileName),{ ltrim : true, rtrim : true , headers : true , ignoreEmpty : true })
.transform(function (data){
Object.keys(data).forEach(function (key) {
   var newKey       = key.trim();
   data[newKey]     = data[key].trim();
});
    return data;
})
.on("data", function(data){
     if (!FileCleanFlag) { return; }
     //checking unicode char presence
     Object.keys(data).forEach(function (key) {
     if(data[key]){
      var charValue   = PUNYCODE.ucs2.decode(data[key]);
      charValue = charValue.map(function(val) {
         if(val>126){
           FileCleanFlag=false;
           errorData.push(data);
         }
      });
   }else{
      FileCleanFlag=false;
   }
 });

 if(!FileCleanFlag){
    #here want to jump to end block instead of parsing next rows
 }
})
.on('end', function (){
   #some work on rows containing error
});

如果您需要沿着这条路走下去,请参阅How to close a readable stream (before end)?了解如何关闭流黑客。

此外,您还可以抛出错误并相应地捕获它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38766847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档