使用流在node.js中传输数据
设置:我正在从数据库读取数据,并将数据集作为CSV文件发送电子邮件。数据以500行为单位读取,我使用CSV将记录写入流。然后我想使用电子邮件将文件作为附件发送 选项1(我不想做的事情):使用流在node.js中传输数据,node.js,stream,Node.js,Stream,设置:我正在从数据库读取数据,并将数据集作为CSV文件发送电子邮件。数据以500行为单位读取,我使用CSV将记录写入流。然后我想使用电子邮件将文件作为附件发送 选项1(我不想做的事情): 创建临时文件 创建对该文件的写入流 写入所有CSV记录 将所有内容读回内存,并附加到电子邮件中 选项2(我想做但不太知道如何做): 创建一个可写流 创建可读流 以某种方式将写入从(1)传输到(2) 将可写流传递给csv 将可读流传递给mailgun 获取数据并写入写入流,直到不再有数据 结束写流,从而结束读流并
writeable.pipe(可读)代码>
我曾尝试使用双工
流(即写流和读流都是双工流),但这不起作用,因为双工是一个抽象类,我必须实现几个链接部分
问题:我如何使用流将CSV记录的写入链接到mailgun的流式附件?不要想太多,mailgun js
可以将流作为附件,它可以非常简单:
var csv = require('csv');
var mailgun = require('mailgun-js');
// this will stream some csv
var file = myDbStream.pipe(csv.stringify());
var data = {
from: 'Excited User <me@samples.mailgun.org>',
to: 'serobnic@mail.ru',
subject: 'Hello',
text: 'Testing some Mailgun awesomness!',
attachment: file // attach it to your message, mailgun should deal with it
};
mailgun.messages().send(data, function (error, body) {
console.log(body);
});
var csv=require('csv');
var mailgun=require('mailgun-js');
//这将流式传输一些csv
var file=myDbStream.pipe(csv.stringify());
风险值数据={
发件人:'兴奋用户',
致:'serobnic@mail.ru',
主题:“你好”,
文字:“测试一些邮枪的威严!”,
附件:文件//将其附加到您的邮件中,mailgun应该处理它
};
mailgun.messages().send(数据、函数(错误、正文){
控制台日志(主体);
});
我不知道您的Db是什么,可能驱动程序已经支持流,或者您必须手动输入csv
(可以通过事件流
轻松完成)
编辑
ya csv
似乎无法轻松传送,csv
效果更好。这似乎有效,只是我正在使用mailgun.Attachment
创建附件,而我收到的电子邮件没有任何附件。我从流上的数据事件中记录了数据,数据肯定是正确的,但是电子邮件是通过没有附件的方式发送的。从文档中,他们需要流的内容类型和知识长度,如果附件对象不满足这些有效条件,则会忽略它。