通过readStream将数组值和javascript文件一起发送到客户端?
我有一个node.js服务器使用node mysql提取数据,并将其保存到一个名为FRUITS的数组中 我需要用javascript文件传输这个数组(水果)的值,该文件是我使用“readStream”发送给客户端的 有什么办法吗?代码如下 nodeController.js通过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;
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文件中的脚本?