无法将javascript值从查询传递到websocket
我使用nodejs 0.10.12和node postgre 2.2.0 我创建了一个包含两个不同查询的函数,它们执行fine并返回结果 执行查询后,我希望收集两个查询的所有结果,并通过WebSocket将它们发送到客户端 我无法将查询中的值传递给WebSocket。在客户机中,当我通知传入的数据时,我得到“未定义”。我想把变量设置为全局变量,但还是没有 有什么想法吗 提前谢谢 这是密码无法将javascript值从查询传递到websocket,javascript,node.js,websocket,Javascript,Node.js,Websocket,我使用nodejs 0.10.12和node postgre 2.2.0 我创建了一个包含两个不同查询的函数,它们执行fine并返回结果 执行查询后,我希望收集两个查询的所有结果,并通过WebSocket将它们发送到客户端 我无法将查询中的值传递给WebSocket。在客户机中,当我通知传入的数据时,我得到“未定义”。我想把变量设置为全局变量,但还是没有 有什么想法吗 提前谢谢 这是密码 //set all vars as globals, at the start of the doc va
//set all vars as globals, at the start of the doc
var mnm=[]; var name;
//inside the function
//query 1
client.connect();
var query = client.query('SELECT pins.p_name FROM pins WHERE pins.p_id ='+eoid)
query.on("row", function (row, result) {result.addRow(row);});
query.on("end", function (result) {
for (var i=0; i<result.rows.length; i++)
{name = result.rows[0].p_name;}
});
//query 2
var query2 = client.query('SELECT m_name FROM multi WHERE m_pins ='+eoid)
query2.on("row", function (row, result) {result.addRow(row);});
query2.on("end", function (result) {
for (var i=0; i<result.rows.length; i++)
{mnm.push(result.rows[i].m_name);}
client.end();
});
//so , now gather "name" from the first query and "mnm" from the second and send them to client
connection.send(JSON.stringify({name:name , mnm:mnm}));
client.connect();
var query = client.query('SELECT pins.p_name FROM pins WHERE pins.p_id ='+eoid)
query.on("row", function (row, result) {result.addRow(row);});
query.on("end", function (result) {
for (var i=0; i<result.rows.length; i++)
{name = result.rows[0].p_name;}
var query2 = client.query('SELECT m_name FROM multi WHERE m_pins ='+eoid)
query2.on("row", function (row, result) {result.addRow(row);});
query2.on("end", function (result) {
for (var i=0; i<result.rows.length; i++)
{mnm.push(result.rows[i].m_name);}
connection.send(JSON.stringify({name:name , mnm:mnm}));
client.end();
});//inner query "on end"
}); //outter query "on end"
//在文档开头将所有变量设置为全局变量
var mnm=[];变量名;
//函数内部
//问题1
client.connect();
var query=client.query('从pins.p_id='+eoid的pins中选择pins.p_名称)
on(“row”,函数(row,result){result.addRow(row);});
on(“end”,函数(result){
对于(var i=0;i,基于Mathieu'OtaK'Amiot简单但有效的想法,我在第一个查询的“end”事件中进行第二个查询
这是代码
//set all vars as globals, at the start of the doc
var mnm=[]; var name;
//inside the function
//query 1
client.connect();
var query = client.query('SELECT pins.p_name FROM pins WHERE pins.p_id ='+eoid)
query.on("row", function (row, result) {result.addRow(row);});
query.on("end", function (result) {
for (var i=0; i<result.rows.length; i++)
{name = result.rows[0].p_name;}
});
//query 2
var query2 = client.query('SELECT m_name FROM multi WHERE m_pins ='+eoid)
query2.on("row", function (row, result) {result.addRow(row);});
query2.on("end", function (result) {
for (var i=0; i<result.rows.length; i++)
{mnm.push(result.rows[i].m_name);}
client.end();
});
//so , now gather "name" from the first query and "mnm" from the second and send them to client
connection.send(JSON.stringify({name:name , mnm:mnm}));
client.connect();
var query = client.query('SELECT pins.p_name FROM pins WHERE pins.p_id ='+eoid)
query.on("row", function (row, result) {result.addRow(row);});
query.on("end", function (result) {
for (var i=0; i<result.rows.length; i++)
{name = result.rows[0].p_name;}
var query2 = client.query('SELECT m_name FROM multi WHERE m_pins ='+eoid)
query2.on("row", function (row, result) {result.addRow(row);});
query2.on("end", function (result) {
for (var i=0; i<result.rows.length; i++)
{mnm.push(result.rows[i].m_name);}
connection.send(JSON.stringify({name:name , mnm:mnm}));
client.end();
});//inner query "on end"
}); //outter query "on end"
client.connect();
var query=client.query('从pins.p_id='+eoid的pins中选择pins.p_名称)
on(“row”,函数(row,result){result.addRow(row);});
on(“end”,函数(result){
对于(var i=0;我将进入异步的奇妙世界!你不能这样做。而且,这段代码非常容易受到SQL注入的攻击。@SLaks Hello。我刚刚编辑了这个问题。看,整个混乱开始了。如果pins
没有与之相关的m_pins
,整个查询将失败。所以我想实现两个不同的查询。哦,拜托,必须有另一种方法。我是一个新手,我正在为此工作一周。请告诉我,还有另一种方法@slevin,你也可以在第一种方法的“结束”事件中进行第二次查询;)