Articles of highland.js

用http请求使用HighlandJSstream

我想要一个url的数组,并将其映射到每个url的网页排名数组。 我想用stream来试试,但我不确定自己在做什么。 我试了几件事,这是我登陆(不工作)的地方: app.js var getPageRank = require('pagerank'); var _ = require('highland'); var urls = [ 'google.com', 'yahoo.com', 'bing.com' ]; // Example usage of getPageRank getPageRank(urls[0], function(err, ranking) { console.log(ranking); }); var getPR = _.wrapCallback(getPageRank); _(urls).map(getPR).toArray(function (myAnswer) { console.log(myAnswer); }); 的package.json { "name": "page-rank", "version": "0.0.0", "description": "", "main": "app.js", "scripts": { }, "author": "", […]

无法从结果中使用streams / highland.js从mongodb中获取数据

我是新来的stream,我试图从我的集合使用反应superglue / highland.js( https://github.com/santillaner/reactive-superglue )获取数据。 var sg = require("reactive-superglue") var query = sg.mongodb("mongodb://localhost:27017/qatrackerdb").collection("test1") exports.findAll = function (err, res) { query.find() .map(JSON.stringify) .done(function(data) { console.log(data) res.end(data) }) } 我的卷毛请求: curl -i -X GET http://localhost:3000/queries/

阅读大文件和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—–') 但是,我似乎无法解决如何处理文件并提取我需要的数据。

使用asynchronous处理高地stream块

我正在使用highland.js来处理文件,使用stream来读取两个分隔符之间的内容。 我还使用async.js按顺序运行一系列http请求。 理想情况下,我想将来自高地的输出x作为第一个函数传递给async系列(链),以便为从stream中提取的每个块执行HTTP请求。 这可能吗? 如果是这样,这怎么能实现呢? var async = require('async'); var _ = require('highland'); _(fs.createReadStream(files[0], { encoding: 'utf8' })) .splitBy('—–BEGIN—–\n') .splitBy('\n—–END—–\n') .filter(chunk => chunk !== '') .each(function (x) { }).done(function () { async.series([ function(callback) { setTimeout(function() { console.log('Task 1'); callback(null, 1); }, 300); }, function(callback) { setTimeout(function() { console.log('Task 2'); callback(null, 2); }, 200); }, ], […]

如何迭代使用双语对象的数组?

我有一个JSON响应的forms: [{ "id": 425055, "title": "Foo" }, { "id": 425038, "title": "Bar" }, { "id": 425015, "title": "Narf" }] 我使用oboe.js创build高地stream: const cruiseNidStream = _((push, next) => { oboe({ url: 'http://fake.com/bar/overview, method: 'GET', headers: { 'X-AUTH': 'some token', }, }).node('.*', (overview) => { // I expect here to get an object having and id, title property […]

我如何从高地溪stream读取?

所以我有一个高地stream: var getData = highland.wrapCallback(fs.readFile); var fileStream = getData('myfile') console.log(fileStream) 我如何从fileStream读取? 根据高地文档 ,在stream上没有read()方法。

在Highland.js中嵌套stream操作

我有一个readdirp模块的目录stream。 我要:- 在每个目录中使用正则expression式(例如README.* )search文件 读取该文件的第一行不以#开始 打印出目录中的每个目录以及自述文件的第一个非标题行。 我正在尝试使用stream和highland.js来做到这一点。 我被困在试图处理每个目录内的所有文件的stream。 h = require 'highland' dirStream = readdirp root: root, depth: 0, entryType: 'directories' dirStream = h(dirStream) .filter (entry) -> entry.stat.isDirectory() .map (entry) -> # Search all files in the directory for README. fileStream = readdirp root: entry.fullPath, depth: 0, entryType: 'files', fileFilter: '!.DS_Store' fileStream = h(fileStream).filter (entry) […]

高地溪stream'stream失'事件相当

在Node.js可写stream中,我们可以检测缓冲并暂时停止写入stream,直到发生drain事件。 怎样才能知道Highland溪stream已经恢复,这样我们就可以继续写下来,而不用缓冲呢?

公开Highland.jsstream,但在内部处理结束事件

我正在使用Node.js从PostgreSQL数据库读取数据: const readFromDatabase = function (callback) { pg.connect('pg://…', (errConnect, client, disconnect) => { if (errConnect) { return callback(errConnect); } const query = client.query('SELECT * FROM …'); // … }); }; query对象现在是一个事件发射器,只要接收到一行就发出row事件。 另外,一旦所有行都被读取,它就会发出一个end事件。 我现在想要做的是将这个事件发射器包装成一个Highland.jsstream,并把它交给我的函数的调用者。 基本上这应该做的工作: const stream = highland('row', query); callback(null, stream); 不幸的是,一旦所有行都被读取,我仍然需要调用disconnect函数,而且我不希望调用者关心这个。 那么我怎样才能发送stream,同时仍然能够注册end事件的callback? 我已经看到Highland.js提供了完成我所需要的完成function,但是它也导致stream开始stream动(我不想在内部完成,这取决于我的调用者)。 我该如何解决这个问题?

在Highland.js中的上下文

我喜欢Highland.js和一般的反应式编程风格。 我正在努力与上下文的损失,我试图确定如何优雅地处理模式中的目标是放弃状态的上下文。 举个例子,我在Amazon Web Services中有一个我的账户数组。 var accounts = [{accessId:"12345","secretKey":"abc123","account":"foo"}, {accessId:"34512","secretKey":"def456","account":"bar"}]; 我的目标是基本上创build一个运行在一个地区的所有EC2实例的电子表格。 像这样的东西。 Account | Instance Size ——— | ————- foo | m3.xlarge foo | c3.medium bar | t2.small 一般的工作stream程是 浏览每个帐户 调用ec2DescribeInstaces 以某种方式将每个ec2DescribeInstancescallback映射到最终输出的帐户名称 在普通的JavaScript中,我们会在这里做循环,所以当我们每次调用ec2DescribeInstances时,都会存在一个上下文 for ( account in accounts ) { var instances = ec2DescribeInstaces(account); for ( instance in instances ) { results.push({account:account.name, instanceSize: instance.size}); } […]