Knoten + SQL server: Zeilendaten als Stream abrufen

Ich versuche, Node.Js-Anschluss mit Microsoft-Treiber zu verwenden, um mit einem SQL server zu kommunizieren. In den Connector-Docs habe ich eine gute Option namens 'stream' gefunden. Es fügt die Möglichkeit hinzu, asynchronous Zeilenobjekte zu erhalten.

Meine data haben einige spezifische – einige Spalten haben große Binärdaten (> 100 Mb). So kann auch eine Zeile wirklich groß sein. Ich bin auf der search nach der Fähigkeit, jede Zeile data als Stream zu bekommen. Es ist möglich in .NET-Treiber ( CommandBehavior.SequentialAccess Enumeration). Ist es möglich in Node.js?

AKTUALISIERT Hier ist ein Code, um das Problem zu demonstrieren:

Benutzerdefiniertes beschreibbares Strommodul:

var stream = require('stream'); var util = require('util'); function WritableObjects() { stream.Writable.call( this, { objectMode: true } ); } util.inherits( WritableObjects, stream.Writable ); WritableObjects.prototype._write = function( chunk, encoding, doneWriting ) { console.log('write', chunk, encoding); doneWriting(); }; module.exports = { WritableObjects: WritableObjects }; 

und database-Abfrage-Code:

 var sw = new wstream.WritableObjects(); var request = new sql.Request(connection); request.stream = true; request.pipe(sw); request.query('SELECT DataId, Data FROM ds.tData WHERE DataId in (1)'); sw.on('error', function(err) { console.log('Stream err ', err) }); sw.on('pipe', function(src) { console.log('Stream pipe ') }); sw.on('finish', function(data) { console.log('Stream finish') }); 

Ich dieses Beispiel chunk Parameter der _write Methode enthält die ganze data von db datasatz, kein Stream. Weil Data einen großen varbinary dataspeicher des Knotenprozesses enthält, wächst auch riesig.

Solutions Collecting From Web of "Knoten + SQL server: Zeilendaten als Stream abrufen"

Ja, Sie können Stream-Abfrage mit dem node-mssql Paket wie hier angegeben: https://github.com/patriksimek/node-mssql

Stream – Stream Recordsets / Zeilen anstatt sie alle sofort als Argument des callbacks zurückzugeben (default: false). Sie können auch Streaming für jede Anfrage unabhängig (request.stream = true) aktivieren. Immer auf true setzen, wenn du mit großen Mengen an Zeilen arbeiten willst.