2015-12-01 44 views
0

我有一个node.js服务器使用node-mysql提取数据并将其保存到名为FRUITS的数组中。通过readStream将数组的值通过JavaScript文件发送给客户端?

我需要这个数组的(水果)的值与我发送给使用“readStream”客户端的JavaScript文件传输..

如何做到这一点任何想法?下面

nodeController.js

function sendJSfile(req, res) { 

    seed_id = "valid_fruits" 

    var mysql = require('mysql'); 
    var end; 
    var connection = mysql.createConnection({ 
     host: 'myhost', 
     user: 'username', 
     password: 'password', 
     database: 'databasename' 
    }); 
    connection.connect() 
    connection.query({ 
     sql: 'SELECT fruit_type FROM fruit_table WHERE seed_id = ? LIMIT 0, 10', 
     timeout: 4000, 
     values: [seedid] 
    }, function (err, result, fields) { 

     var FRUITS = []; 
     for (var i = 0; i < result.length; i++) { 

      var obj = result[i] 

      FRUITS.push(obj.fruit_type) 
     } 
    }) 

    res.writeHead(200, { "Content-Type": "text/javascript" }); 

    var readStream = fs.createReadStream("./fruits.js") 
    readStream.on('open', function() { 
     readStream.pipe(res); 
    }); 
    readStream.on('error', function (err) { 
     res.end(err); 
    }) 

    Client.js 

    // I use a post request because I need to send data to the server then receive the javascript file back via readStream 

    request("myserver", "post", { apples }) 
     .done(function (res) { 
     }) 
}) 


function request(url, method, data) { 
    return $.ajax({ 
     url: url, 
     method: method, 
     data: data 
    }) 
} 
+0

您只能将FRUITS数组作为JSON放在fruits.js文件中,您不能发送任何其他内容,只请求一个响应。 –

+0

好吧,将FRUITS作为json放入fruits.js中的最佳方式是什么?你有任何示例代码? – PickMeUpLittle

回答

0

的程序将果实数组作为JSON追加到js文件和流它:

connection.query({ 
    sql: 'SELECT fruit_type FROM fruit_table WHERE seed_id = ? LIMIT 0, 10', 
    timeout: 4000, 
    values: [seedid] 
}, function(err, result, fields) { 

    var FRUITS = []; 
    for(var i = 0; i < result.length; i++) { 

     var obj = result[i] 

     FRUITS.push(obj.fruit_type); 
    } 

    var fileVar = 'var FRUITS = '+JSON.stringify(FRUITS)+';'; 

    fs.appendFile('./fruits.js', fileVar, function(err) { 
     res.writeHead(200, { 
      "Content-Type": "text/javascript" 
     }); 

     var readStream = fs.createReadStream("./fruits.js") 
     readStream.on('open', function() { 
      readStream.pipe(res); 
     }); 
     readStream.on('error', function(err) { 
      res.end(err); 
     }) 
    }); 
}); 

这样您将在本var FRUITS = ["apple","banana"];追加到fruits.js因此如果您使用fruits.js作为脚本,则可以使用FRUITS作为变量。

+0

谢谢 - 最新的方式是什么'解压'fruits.js中附加的FRUITS? – PickMeUpLittle

+0

也将fruits.js作为JSON,因此您可以解析它,追加新数组,将其写入并进行流式处理。否则,你需要告诉我你做什么或者它包含什么fruits.js –

+0

我需要在fruits.js中执行javascript代码,其中包含的代码需要遍历FRUITS数组..这是否有意义? – PickMeUpLittle

相关问题