簡體   English   中英

使用管道將數據從 msssql 流式傳輸到節點

[英]Use pipe to stream data from msssql to node

我正在使用 node 和node-mssql 6.0.1,我使用流從數據庫中獲取大量數據並將其發送到前端。

我正在嘗試按照文檔的建議使用管道和流,但我無法讓它工作。

我的代碼是

const pool = new sql.ConnectionPool(config);
const poolConnect = pool.connect();

const testStream = (ws , id) => {     
    poolConnect.then((pool) => {   
      const request = new sql.Request(pool);
      request.pipe(stream);

         request
        .input('id_param', sql.Int, parseInt(id)) 
        .query('SELECT * FROM dataTable WHERE id = @id_param ')  
 }) 

我得到stream is not defined

我的目標是像這里的示例一樣組合流和管道,然后使用 websockets 將數據發送到客戶端。 我什至不知道將流和 websockets 結合是否有意義。 我想不出任何組合或測試的方法

我當前僅使用流的工作代碼如下所示

const sql = require('mssql');
const pool = new sql.ConnectionPool(config);
const poolConnect = pool.connect();

const testStream = (ws , id) => {       
    poolConnect.then((pool) => {   
      const request = new sql.Request(pool);
      request.stream = true;   
      request
      .input('id_param', sql.Int, parseInt(id))
      .query('SELECT * FROM table WHERE id = @id_param ')  

      let rowsToProcess = [];
      let data = [];  

      request.on('row', row => {   
        rowsToProcess.push(row); 
        if (rowsToProcess.length >= 20) {  
          request.pause();
          processRows(false);
        } 
      });

      request.on('done', () => {      
        processRows(true); 
        sql.close(); 
      });

      const processRows = () => { 
          rowsToProcess.forEach((item)=>{ 
                data.push(item.name);   
                data.push(item.surname);   
                data.push(item.age);   
            });    
          ws.send(JSON.stringify({ success:true, message: data }));
          rowsToProcess = [];
          data = []; 
      }//processRows 

    }) //poolConnect.then  

我在這里缺少什么? 請幫助我開始使用管道和流,我在 Google 中找不到管道/流示例

謝謝

簡單的可寫流

const { Writable } = require('stream');

const stream = new Writable({
  write(chunk, encoding, callback) {
    console.log(chunk.toString());
    callback();    
  }
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM