2017-03-06 130 views
0

我在这里我的代码在节点JS,我怎么能执行多个.write()命令?此代码的输出将创建一个test.xls文件,当我打开该文件时,它只显示第一个writeStream.write,它是标题(“Sl No”+“\ t”+“Age”+“\ t”+ “姓名” + “\ n”),我想所有的人(头,ROW1,ROW2)一起执行所有,并显示他们都在TEST.XLS文件如何执行多个.write()命令?

exports.post = function(req, res){ 
 

 
var writeStream = fs.createWriteStream("test.xls"); 
 
var header="Sl No"+"\t"+" Age"+"\t"+"Name"+"\n"; 
 
var row1 = "0"+"\t"+" 21"+"\t"+"Rob"+"\n"; 
 
var row2 = "1"+"\t"+" 22"+"\t"+"bob"+"\n"; 
 

 
writeStream.write(header); 
 
writeStream.write(row1); 
 
writeStream.write(row2); 
 
writeStream.close(); 
 
\t 
 
};

+0

你为什么要打破' “\ t” 的'和' “\ n”'分开?您可以将所有内容嵌入到一个字符串中'var header =“Sl No \ tAge \ tName \ n”;'。 – jfriend00

+0

你确定他们并不都在文件中吗?你如何看待这个文件?此外,这没有做任何事情'['header','row1','row2']。join('\ t')'。为什么在那里? – jfriend00

+0

哦好吧对不起。即时通讯只是让我的代码组织 –

回答

1

的尽快将它们全部写入是一个快速修复:

writeStream.write(header + '\n' + row1 + '\n' + row2); 
writeStream.close(); 

使用.end.close,因为节点是异步的。从我的理解end等待所有可写块完成,close终止流。

writeStream.write(header); 
writeStream.write(row1); 
writeStream.write(row2); 
writeStream.end(); 
close and error events are emitted when a stream ends due to failure (e.g. stream.destroy()) 
end is emitted when a readable stream has no more data 

source

+0

谢谢!它的工作先生 –

+1

这是更多的解决办法,而不是解释为什么OP在他们的代码中有问题。 – jfriend00