Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过readStream将数组值和javascript文件一起发送到客户端?_Javascript_Node.js_Node Mysql_Cfreadstream - Fatal编程技术网

通过readStream将数组值和javascript文件一起发送到客户端?

通过readStream将数组值和javascript文件一起发送到客户端?,javascript,node.js,node-mysql,cfreadstream,Javascript,Node.js,Node Mysql,Cfreadstream,我有一个node.js服务器使用node mysql提取数据,并将其保存到一个名为FRUITS的数组中 我需要用javascript文件传输这个数组(水果)的值,该文件是我使用“readStream”发送给客户端的 有什么办法吗?代码如下 nodeController.js function sendJSfile(req, res) { seed_id = "valid_fruits" var mysql = require('mysql'); var end;

我有一个node.js服务器使用node mysql提取数据,并将其保存到一个名为FRUITS的数组中

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

有什么办法吗?代码如下

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
    })
}
函数sendJSfile(请求、恢复){
种子\u id=“有效的\u果实”
var mysql=require('mysql');
var端;
var connection=mysql.createConnection({
主持人:“myhost”,
用户:“用户名”,
密码:“password”,
数据库:“databasename”
});
connection.connect()
connection.query({
sql:'从水果表中选择水果类型,其中种子id=?限制0,10',
超时:4000,
值:[seedid]
},函数(错误、结果、字段){
风险值=[];
对于(变量i=0;i
这将把水果数组作为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);
        })
    });
 });
connection.query({
sql:'从水果表中选择水果类型,其中种子id=?限制0,10',
超时:4000,
值:[seedid]
},函数(错误、结果、字段){
风险值=[];
对于(变量i=0;i

通过这种方式,您将附加这个
var FRUITS=[“apple”,“banana”]
fruits.js
中,因此如果使用
fruits.js
作为脚本,您可以使用
fruits
作为变量。

您只能将fruits数组作为JSON放在fruits.js文件中,不能发送任何其他内容,一个请求一个响应。好的,将fruits作为JSON放在fruits.js中的最佳方法是什么?您有任何示例代码吗?谢谢-什么是在FRUITS.js中“解包”附加水果的最佳方法?将FRUITS.js也作为JSON,这样您就可以解析它、附加新数组、编写它并流式传输它。否则你需要告诉我你做了什么,或者它包含了什么水果。jsI需要在fruits.js中执行javascript代码,其中包含的代码需要遍历水果数组。。这有意义吗?是的,所以将其添加为变量我将更新答案。我注意到它将数组放置在js文件的底部,Sycronity会有问题吗?我需要先插入数组,然后运行js文件中的脚本?