将使用alasql创建的sql表从Server(node.js)传递到Client(ejs)

时间:2017-01-05 16:55:10

标签: node.js express ejs alasql

我很乐意在以下主题上获得一些帮助,因为我没有设法通过它。 我的目标是在服务器端收集一些数据(到目前为止我使用alasql将我的CSV fil转换为sql表),然后将其作为参数传递给客户端,在客户端执行其他sql操作(再次使用alasql)。 到目前为止,我已经成功了

  • 借助alasql
  • 将CSV文件转换为sql表
  • 将参数从服务器端传递到客户端

但我没有设法

  • 将sql表本身作为参数
  • 从服务器端传递到客户端

我尝试这样做的最好结果是

`input=[object Object],[object Object],...`

而不是我期望的sql表,这会产生错误

我在服务器端的代码如下:

var express = require('express');
var session = require('cookie-session'); // Charge le middleware de sessions
var bodyParser = require('body-parser'); // Charge le middleware de gestion     des paramètres
var urlencodedParser = bodyParser.urlencoded({ extended: false });
var alasql=require('alasql');

var app = express();

var input=0;

alasql('SELECT * FROM CSV("public/data/output.csv",{separator:";"})',[],function(data){
    input=data;
    console.log(1)
});

/* On utilise les sessions */
app.use(session({secret: 'TBC'}))

/* S'il n'y a pas de todolist dans la session, on en crée une vide sous forme d'array avant la suite */
.use(function(req, res, next){
    next();
})

.use(express.static(__dirname + '/public'))

/* On affiche la todolist et le formulaire */
.get('/segmentation_clients', function(req, res) { 
    console.log(input);
    var Commercial='U.Morel';
    res.render('segmentation_clients.ejs', {Commercial:'U. Morel',input:input});
})

 .listen(8080);

客户端JS代码的开头(segmentation_clients.ejs):

var Commercial="<%=Commercial%>";
var input= <%=input%>;
console.log(input);

代码的输出(#Commercial参数确定,但#input SQL表不正确): enter image description here

非常感谢您对此主题的帮助

非常感谢 斯特凡

1 个答案:

答案 0 :(得分:0)

我终于得到了解决方案:

  • 在服务器端,我替换了input:input

input:JSON.stringify(input)
  • 在客户端,我替换了var input= <%=input%>;

var input= <%-input%>;

第一个问题是格式问题(通过转换JSON格式的输入来解决),第二个问题是用“ - ”评估arry中的数据而不是仅仅读取“=”,目前为止据我所知

最佳

斯特凡