Tag: stream

Sailsjs下载一个数据stream

我有一个帆的应用程序,我使用exceljs来生成一个excel文件。 看他们的文档: https://www.npmjs.com/package/exceljs#writing-xlsx 看起来他们允许写入一个stream。 // write to a stream workbook.xlsx.write(stream) .then(function() { // done }); 当用户期待回应时,我该怎么做? 我读了下面的内容: http://sailsjs.org/documentation/concepts/custom-responses/adding-a-custom-response http://sailsjs.org/documentation/concepts/custom-responses/default-responses 保存文件后,我也尝试res.attachment() ,并没有成功。 有什么我失踪? 编辑 下面的答案几乎是正确的。 我做了以下,它的工作。 以前的解决scheme有时会损坏文件。 res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); res.setHeader("Content-Disposition", "attachment; filename=" + "Report.xlsx"); return workbook.xlsx.write(res) .then(function() { res.end(); }); 这对我的EC2实例和本地工作。

在变换stream中使用Node.js readline

我们有一个巨大的文本文件,我们想要使用stream逐行操作。 有没有在转换stream中使用Node.js readline模块的方法? 比如让整个文本用大写字母(逐行处理)?

阅读大文件和splitby方法

我试图使用highland.js的splitby方法来提取开始和结束分隔符之间的数据。 —–BEGIN DATA—– MIIEzDCCArSgAwIBAgIVCugKYzMN5ra8zPWxYE8pUU9SxjYSMA0GCSqGSIb3DQEB CwUAMHAxCzAJBgNVBAYTAkdCMRUwEwYDVQQIDAxXYXJ3aWNrc2hpcmUxEDAOBgNV BAcMB1dhcndpY2sxEDAOBgNVBAoMB0VudHJ1c3QxETAPBgNVBAsMCFBLSSBURUFN —–END DATA—– —–BEGIN DATA—– MIIETzCCAjegAwIBAgIVBShP2Mx74DZEyNKwYZZPGntRmSWnMA0GCSqGSIb3DQEB DQUAMHIxCzAJBgNVBAYTAkdCMRUwEwYDVQQIDAxXYXJ3aWNrc2hpcmUxEDAOBgNV BAcMB1dhcndpY2sxDDAKBgNVBAoMA0lCTTERMA8GA1UECwwIUEtJIFRFQU0xGTAX 5/62 —–END DATA—– 我可以将文件读入如下的stream中: const readFile = _.wrapCallback(fs.readFile); stream = _(files).map(readFile).parallel(2); const blob = _(stream).splitBy('—–BEGIN DATA—–') 但是,我似乎无法解决如何处理文件并提取我需要的数据。

如何使用microapps Node.js模块处理Shopify的API调用限制

我一直在敲我的头,find一个答案,我只是不知道。 我正在使用microapps的Shopify API的Node.js模块。 我有一个JSON对象,包含产品ID和Skus的列表,我需要更新,所以我循环通过该文件,并调用一个函数,调用API。 Shopify的API限制对它的调用并发送一个剩余值的响应头。 这个节点模块提供了一个包含限制和用法的对象。 我的问题是基于下面的代码如何在setTimeout或类似的时候达到极限。 一旦你第一次打电话,它会返回这样的限制对象: { remaining: 30, current: 10, max: 40 } 这是我没有尊重的限制,因为我试过的一切都失败了: const products = JSON.parse(fs.readFileSync('./skus.json','utf8')); for(var i = 0;i < products.length; i++) { updateProduct(products[i]); } function updateProduct(product){ shopify.productVariant.update(variant.id, { sku: variant.sku }) .then(result => cb(shopify.callLimits.remaining)) .catch(err => console.error(err.statusMessage)); } 我知道我需要实现某种callback来检查剩余使用率是否低,然后等待几秒钟再次调用。 任何帮助将不胜感激。

确定节点stream是否在objectMode中

给定一个节点jsstream对象如何确定它是否是objectMode中的对象stream? 说我有一个可读的stream实例 const myReadableStream = new ReadableStreamImplementation({ options: { objectMode : true } }); 我怎样才能确定myReadableStream是在objectMode。 有没有可以阅读的方法或属性? 无法通过节点stream文档查看答案。 编辑有没有一种方法来告诉不窃听到stream,只给出stream对象本身?

在写入结果可用之前应该注册“漏极”事件

我有这段代码: const file = fs.createWriteStream('./test.txt'); let written = true; // handler is added before even an attempt to write is made file.on('drain', function () { written = true; console.log('drained'); }); const interval = setInterval(function () { if (Date.now() – time > 10000) { clearInterval(interval); } if (written) { written = file.write(new Array(1000000).join('z')); } }, 100); […]

节点转换stream:追加string结束

如何创build一个变换stream,其中唯一的变化将影响,是将一个string附加到传入的可读stream的末尾 。 例如,假设input.txt包含abcdef 。 fs.createReadStream('input.txt', {encoding: 'utf8'}) .pipe(appendTransform) .pipe(fs.createWriteStream('output.txt', {encoding: 'utf8'})); 我可以使用什么appendTransform ,使output.txt包含abcdefghi 。

如何将事件发送到gulp-tap的父stream中

我正在设置一个gplp文件,在开发过程中将多个JavaScript文件捆绑到多个捆绑包中。 因为我想观察这个过程,如果在其中一个文件中有错误(语法或其他),我将需要正确地向父stream发送一个end事件,不要退出。 为了处理多个文件,我使用了gulp食谱中描述的方法 。 但是,使用这个和阅读文档上的吞咽水龙头,我不确定如何让它发送到父stream的错误。 我想要做的是以下几点: gulp.task('bundle', () => ( gulp.src(['whatevs/*.js'], { read: false }) .pipe($.tap((file) => { file.contents = browserify( // eslint-disable-line no-param-reassign file.path, { debug: true, fullPaths: true } ).bundle(); })) .on('error', function handleBrowserifyError(err) { this.emit('end'); }) .pipe(gulp.dest('bundles/')) )); 我可以看到错误,如果我将传递给bundle()调用的callback,但我没有丝毫的线索如何将其返回到父stream。

NodeJS-根据stream从SQL Server导出

我在NodeJS的Web应用程序中工作,现在我想添加一个模块,用于根据stream/套接字将我的SQL Server数据库(10.000.000条logging)中的海量logging导出到.CSV文件。 如果有100个用户从服务器上下载数据(.csv),则会增加服务器 / 客户端的大量内存使用量。 我想,如果可能,将数据(.csv)保存到硬盘驱动器(客户端),否则保存到服务器/客户端内存(RAM)中。 Server.js var http = require('http'); var express = require('express'); var app = express(); var server = http.Server(app); var io = require('socket.io')(server); io.on('connection', function (socket) { console.log('Connection is ready!') socket.on('get_records', function (data) { var connection = new sql.Connection(config, function (err) { if (err) { console.log(err.message); } var request = new […]

用node.jsstreampipe道处理超时

我pipe道到一个HTTPS请求的文件,它可以正常工作99.9%的电话,但偶尔(可能当服务器或networking不可用)挂起无限期… 这显然导致我的应用程序停止工作,需要手动重新启动… 我有其他的HTTPS连接偶尔挂起,现在在请求对象上使用下面的错误代码,现在总是完成,如节点文档中所build议的: request.on('socket', function(socket) { socket.setTimeout(10000); socket.on('timeout', function() { request.abort(); }); }); request.on('error', function(e) { // Handle the error… console.error("FAILED!"); }); …但是,如果目的地是通过pipe道传输到文件stream的话,请求超时似乎会被忽略,也许我应该在文件系统对象上处理一个超时的错误,但是文档不清楚是否有一个事件等待除了“完成”… 这里是示例代码,我希望有人能帮助我: var https = require('https'), fs = require('fs'); var opts = { host: 'www.google.com', path: '/', method: 'GET', port: 443 }; var file = fs.createWriteStream('test.html'); var request = https.request(opts, function(response) { response.pipe(file); […]