ventajas usando tutorial node framework ejemplos desventajas cómo crear node.js node.js-stream

node.js - usando - Cómo implementar una secuencia de escritura



node js ventajas y desventajas (2)

Quiero canalizar los datos de una secuencia de Amazon kinesis a un registro s3 o un registro bunyan.

El ejemplo funciona con una secuencia de escritura de archivo o stdout. ¿Cómo podría implementar mi propio flujo de escritura?

//this works var file = fs.createWriteStream(''my.log'') kinesisSource.pipe(file)

esto no funciona diciendo que no tiene un método ''encendido''

var stream = {}; //process.stdout works however stream.writable = true; stream.write =function(data){ console.log(data); }; kinesisSource.pipe(stream);

¿Qué métodos tengo que implementar para mi propia secuencia de escritura personalizable, los documentos parecen indicar que necesito implementar ''escribir'' y no ''activar''


En realidad, crear una secuencia de escritura es bastante simple. Aquí está el ejemplo:

var fs = require(''fs''); var Stream = require(''stream''); var ws = new Stream; ws.writable = true; ws.bytes = 0; ws.write = function(buf) { ws.bytes += buf.length; } ws.end = function(buf) { if(arguments.length) ws.write(buf); ws.writable = false; console.log(''bytes length: '' + ws.bytes); } fs.createReadStream(''file path'').pipe(ws);

Además, si quieres crear tu propia clase, @Paul da una buena respuesta.


Para crear su propia secuencia de escritura, tiene tres posibilidades.

Crea tu propia clase

Para esto, necesitará 1) extender la clase Escribir 2) para llamar al constructor Escribir en su propio constructor 3) definir un método _write() en el prototipo de su objeto de transmisión.

Aquí hay un ejemplo:

var stream = require(''stream''); var util = require(''util''); function EchoStream () { // step 2 stream.Writable.call(this); }; util.inherits(EchoStream, stream.Writable); // step 1 EchoStream.prototype._write = function (chunk, encoding, done) { // step 3 console.log(chunk.toString()); done(); } var myStream = new EchoStream(); // instanciate your brand new stream process.stdin.pipe(myStream);

Extienda un objeto de Escritura vacío

En lugar de definir un nuevo tipo de objeto, puede instanciar un objeto _write() vacío e implementar el método _write() :

var stream = require(''stream''); var echoStream = new stream.Writable(); echoStream._write = function (chunk, encoding, done) { console.log(chunk.toString()); done(); }; process.stdin.pipe(echoStream);

Usa la API de Constructor Simplificado

Si está utilizando io.js, puede usar la API de constructor simplificada :

var writable = new stream.Writable({ write: function(chunk, encoding, next) { console.log(chunk.toString()); next(); } });

Use una clase ES6 en el Nodo 4+

class EchoStream extends stream.Writable { _write(chunk, enc, next) { console.log(chunk.toString()); next(); } }